├── .github
├── CODEOWNERS
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ ├── config.yml
│ └── feature_request.md
├── PULL_REQUEST_TEMPLATE.md
├── SECURITY.md
├── SUPPORT.md
└── workflows
│ └── release.yml
├── .gitignore
├── CHANGELOG.md
├── COPYRIGHT.md
├── LICENSE
├── README.md
├── doc
└── QuickStartGuide.md
├── docker
├── Dockerfile
└── README.md
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
└── main
├── java
└── net
│ └── sberg
│ └── openkim
│ ├── AppConfig.java
│ ├── JasperReportConfig.java
│ ├── MainWebAppInitializer.java
│ ├── OpenkimApplication.java
│ ├── WebMvcConfig.java
│ ├── WebSecurityConfig.java
│ ├── common
│ ├── AbstractWebController.java
│ ├── CommonBuilderFactory.java
│ ├── EnumAuthRole.java
│ ├── EnumMailAuthMethod.java
│ ├── EnumMailConnectionSecurity.java
│ ├── FileUtils.java
│ ├── GlobalController.java
│ ├── ICommonConstants.java
│ ├── StringUtils.java
│ ├── metrics
│ │ ├── DefaultMetric.java
│ │ ├── DefaultMetricFactory.java
│ │ └── DefaultTimeMetric.java
│ └── x509
│ │ ├── CMSUtils.java
│ │ ├── EnumX509ErrorCode.java
│ │ ├── IssuerAndSerial.java
│ │ ├── TelematikIdResult.java
│ │ ├── X509CertificateResult.java
│ │ └── X509CertificateUtils.java
│ ├── dashboard
│ ├── DashboardController.java
│ ├── DashboardService.java
│ ├── KonnektorMonitoringCardResult.java
│ ├── KonnektorMonitoringFachdienstResult.java
│ ├── KonnektorMonitoringResult.java
│ └── KonnektorMonitoringWebserviceResult.java
│ ├── fachdienst
│ ├── EnumFachdienst.java
│ ├── EnumFachdienstDomainDescrId.java
│ ├── Fachdienst.java
│ ├── FachdienstDescr.java
│ ├── FachdienstDomainDescr.java
│ ├── FachdienstService.java
│ └── README.md
│ ├── gateway
│ ├── GatewayBasicChannelInboundHandler.java
│ ├── GatewayKeystoreController.java
│ ├── GatewayKeystoreData.java
│ ├── GatewayKeystoreService.java
│ ├── GatewayNettyServer.java
│ ├── pop3
│ │ ├── EnumPop3GatewayState.java
│ │ ├── Pop3Gateway.java
│ │ ├── Pop3GatewayConfiguration.java
│ │ ├── Pop3GatewayProtocol.java
│ │ ├── Pop3GatewayProtocolHandlerChain.java
│ │ ├── Pop3GatewaySession.java
│ │ ├── README.md
│ │ ├── cmdhandler
│ │ │ ├── Pop3GatewayAuthCmdHandler.java
│ │ │ ├── Pop3GatewayCapaCmdHandler.java
│ │ │ ├── Pop3GatewayDeleCmdHandler.java
│ │ │ ├── Pop3GatewayListCmdHandler.java
│ │ │ ├── Pop3GatewayNoopCmdHandler.java
│ │ │ ├── Pop3GatewayPassCmdHandler.java
│ │ │ ├── Pop3GatewayQuitCmdHandler.java
│ │ │ ├── Pop3GatewayRetrCmdHandler.java
│ │ │ ├── Pop3GatewayRsetCmdHandler.java
│ │ │ ├── Pop3GatewayStatCmdHandler.java
│ │ │ ├── Pop3GatewayStlsCmdHandler.java
│ │ │ ├── Pop3GatewayTopCmdHandler.java
│ │ │ ├── Pop3GatewayUidlCmdHandler.java
│ │ │ ├── Pop3GatewayUnknownCmdHandler.java
│ │ │ ├── Pop3GatewayUserCmdHandler.java
│ │ │ └── Pop3GatewayWelcomeMessageHandler.java
│ │ └── signreport
│ │ │ ├── SignReportService.java
│ │ │ ├── VerifyCertResult.java
│ │ │ ├── VerifyOCSPResult.java
│ │ │ └── VerifyResult.java
│ └── smtp
│ │ ├── AbstractGatewayHookableCmdHandler.java
│ │ ├── EnumSmtpGatewayState.java
│ │ ├── README.md
│ │ ├── SmtpGateway.java
│ │ ├── SmtpGatewayConfiguration.java
│ │ ├── SmtpGatewayProtocol.java
│ │ ├── SmtpGatewayProtocolHandlerChain.java
│ │ ├── SmtpGatewaySession.java
│ │ ├── cmdhandler
│ │ ├── SmtpGatewayAuthCmdHandler.java
│ │ ├── SmtpGatewayDataCmdHandler.java
│ │ ├── SmtpGatewayEhloCmdHandler.java
│ │ ├── SmtpGatewayHeloCmdHandler.java
│ │ ├── SmtpGatewayMailCmdHandler.java
│ │ ├── SmtpGatewayNoopCmdHandler.java
│ │ ├── SmtpGatewayQuitCmdHandler.java
│ │ ├── SmtpGatewayRcptCmdHandler.java
│ │ ├── SmtpGatewayRsetCmdHandler.java
│ │ ├── SmtpGatewayStartTlsCmdHandler.java
│ │ ├── SmtpGatewayUnknownCmdHandler.java
│ │ └── SmtpGatewayWelcomeMessageHandler.java
│ │ └── hook
│ │ ├── SmtpGatewayMailHook.java
│ │ └── SmtpGatewayQuitHook.java
│ ├── konfiguration
│ ├── EnumGatewayTIMode.java
│ ├── EnumTIEnvironment.java
│ ├── Konfiguration.java
│ ├── KonfigurationController.java
│ ├── KonfigurationService.java
│ ├── README.md
│ ├── ServerState.java
│ ├── ServerStateService.java
│ └── minimal
│ │ ├── MinimalKonfiguration.java
│ │ └── MinimalKonfigurationController.java
│ ├── konnektor
│ ├── CMSAttribute.java
│ ├── EnumKonnektorAuthMethod.java
│ ├── EnumKonnektorServiceBeanType.java
│ ├── Konnektor.java
│ ├── KonnektorCard.java
│ ├── KonnektorController.java
│ ├── KonnektorDnsController.java
│ ├── KonnektorNtpController.java
│ ├── KonnektorService.java
│ ├── KonnektorServiceBean.java
│ ├── KonnektorVzdController.java
│ ├── KonnektorWebserviceController.java
│ ├── KonnektorWebserviceInterceptor.java
│ ├── KonnektorWebserviceUtils.java
│ ├── README.md
│ └── WebserviceConnector.java
│ ├── log
│ ├── DefaultLogger.java
│ ├── DefaultLoggerContext.java
│ ├── EnumLogTyp.java
│ ├── Log.java
│ ├── LogController.java
│ ├── LogService.java
│ └── error
│ │ ├── EnumErrorCode.java
│ │ ├── IErrorContext.java
│ │ ├── MailDecryptErrorContext.java
│ │ ├── MailEncryptFormatErrorContext.java
│ │ ├── MailSignEncryptErrorContext.java
│ │ ├── MailSignVerifyErrorContext.java
│ │ ├── MailaddressCertErrorContext.java
│ │ ├── MailaddressKimVersionErrorContext.java
│ │ └── MailaddressRcptToErrorContext.java
│ ├── pipeline
│ ├── PipelineOperation.java
│ ├── PipelineService.java
│ └── operation
│ │ ├── DefaultPipelineOperationContext.java
│ │ ├── IPipelineOperation.java
│ │ ├── IPipelineOperationContext.java
│ │ ├── PipelineOperationLabel.java
│ │ ├── konnektor
│ │ ├── GetSignCardHandleOperation.java
│ │ ├── KonnektorConnectionInformationOperation.java
│ │ ├── KonnektorLoadAllCardInformationOperation.java
│ │ ├── dns
│ │ │ ├── DnsFqdnRequestOperation.java
│ │ │ ├── DnsRequestOperation.java
│ │ │ ├── DnsResult.java
│ │ │ ├── DnsResultContainer.java
│ │ │ └── DnsUtils.java
│ │ ├── ntp
│ │ │ ├── NtpRequestOperation.java
│ │ │ └── NtpResult.java
│ │ ├── vzd
│ │ │ ├── EnumKomLeVersion.java
│ │ │ ├── EnumVzdErrorCode.java
│ │ │ ├── LoadVzdCertsOperation.java
│ │ │ ├── SearchVzdOperation.java
│ │ │ ├── VzdMailResult.java
│ │ │ ├── VzdResult.java
│ │ │ └── VzdUtils.java
│ │ └── webservice
│ │ │ ├── DecryptDocumentOperation.java
│ │ │ ├── EncryptDocumentOperation.java
│ │ │ ├── GetCardTerminalsOperation.java
│ │ │ ├── GetCardsOperation.java
│ │ │ ├── GetJobNumberOperation.java
│ │ │ ├── GetPinStatusOperation.java
│ │ │ ├── GetResourceInformationOperation.java
│ │ │ ├── ReadCardCertificateOperation.java
│ │ │ ├── RequestCardOperation.java
│ │ │ ├── VerifyCertificateOperation.java
│ │ │ ├── VerifyPinOperation.java
│ │ │ └── VerifySignedDocumentOperation.java
│ │ ├── mail
│ │ ├── CheckEncryptedMailFormatOperation.java
│ │ ├── CheckSendingMailOperation.java
│ │ ├── ComposeEncryptedMailOperation.java
│ │ ├── CreateDsnOperation.java
│ │ ├── CreateEmbeddedMessageRfc822Operation.java
│ │ ├── DecryptVerifyMailOperation.java
│ │ ├── DsnHelper.java
│ │ ├── EncryptMailOperation.java
│ │ ├── GetDecryptCardHandleOperation.java
│ │ ├── MailUtils.java
│ │ ├── SendDsnOperation.java
│ │ ├── SignEncryptMailOperation.java
│ │ ├── SignMailOperation.java
│ │ ├── kas
│ │ │ ├── AesGcmHelper.java
│ │ │ ├── EnumKasServiceErrorCode.java
│ │ │ ├── KasIncomingMailOperation.java
│ │ │ ├── KasMetaObj.java
│ │ │ ├── KasMetaObjError.java
│ │ │ ├── KasOutgoingMailOperation.java
│ │ │ ├── KasServiceException.java
│ │ │ └── README.md
│ │ └── part
│ │ │ ├── AddMailAttachmentOperation.java
│ │ │ ├── AddMailTextOperation.java
│ │ │ ├── AnalyzeMailPartsOperation.java
│ │ │ ├── EnumMailPartContentType.java
│ │ │ ├── EnumMailPartDispositionType.java
│ │ │ └── MailPartContent.java
│ │ └── test
│ │ ├── DecryptTextTestOperation.java
│ │ ├── DecryptVerifyMailTestOperation.java
│ │ ├── EncryptTextTestOperation.java
│ │ ├── PipelineOperationTestController.java
│ │ ├── ReadMailTestOperation.java
│ │ ├── SendMailTestOperation.java
│ │ └── SignEncryptMailTestOperation.java
│ └── user
│ ├── UserChangePwd.java
│ ├── UserController.java
│ └── UserService.java
└── resources
├── api
├── AccountLimit.yaml
├── AccountManager.yaml
└── AttachmentService.yaml
├── application.yml
├── fachdienst_descriptors.json
├── fonts
├── Arial
│ ├── arial.ttf
│ ├── arialbd.ttf
│ ├── arialbi.ttf
│ └── ariali.ttf
└── arial.xml
├── jasperreports_extension.properties
├── logback-spring.xml
├── reports
└── signaturpruefbericht.jrxml
├── static
├── css
│ ├── animate.min.css
│ ├── dashboard-old.css
│ ├── dashboard.css
│ ├── font.css
│ ├── fontawesome.min.css
│ ├── login.css
│ ├── regular.min.css
│ └── solid.min.css
├── favicon.ico
├── fonts
│ ├── fa-brands-400.eot
│ ├── fa-brands-400.svg
│ ├── fa-brands-400.ttf
│ ├── fa-brands-400.woff
│ ├── fa-brands-400.woff2
│ ├── fa-regular-400.eot
│ ├── fa-regular-400.svg
│ ├── fa-regular-400.ttf
│ ├── fa-regular-400.woff
│ ├── fa-regular-400.woff2
│ ├── fa-solid-900.eot
│ ├── fa-solid-900.svg
│ ├── fa-solid-900.ttf
│ ├── fa-solid-900.woff
│ ├── fa-solid-900.woff2
│ ├── open-sans-v26-latin-300.eot
│ ├── open-sans-v26-latin-300.svg
│ ├── open-sans-v26-latin-300.ttf
│ ├── open-sans-v26-latin-300.woff
│ ├── open-sans-v26-latin-300.woff2
│ ├── open-sans-v26-latin-300italic.eot
│ ├── open-sans-v26-latin-300italic.svg
│ ├── open-sans-v26-latin-300italic.ttf
│ ├── open-sans-v26-latin-300italic.woff
│ ├── open-sans-v26-latin-300italic.woff2
│ ├── open-sans-v26-latin-500.eot
│ ├── open-sans-v26-latin-500.svg
│ ├── open-sans-v26-latin-500.ttf
│ ├── open-sans-v26-latin-500.woff
│ ├── open-sans-v26-latin-500.woff2
│ ├── open-sans-v26-latin-500italic.eot
│ ├── open-sans-v26-latin-500italic.svg
│ ├── open-sans-v26-latin-500italic.ttf
│ ├── open-sans-v26-latin-500italic.woff
│ ├── open-sans-v26-latin-500italic.woff2
│ ├── open-sans-v26-latin-600.eot
│ ├── open-sans-v26-latin-600.svg
│ ├── open-sans-v26-latin-600.ttf
│ ├── open-sans-v26-latin-600.woff
│ ├── open-sans-v26-latin-600.woff2
│ ├── open-sans-v26-latin-600italic.eot
│ ├── open-sans-v26-latin-600italic.svg
│ ├── open-sans-v26-latin-600italic.ttf
│ ├── open-sans-v26-latin-600italic.woff
│ ├── open-sans-v26-latin-600italic.woff2
│ ├── open-sans-v26-latin-700.eot
│ ├── open-sans-v26-latin-700.svg
│ ├── open-sans-v26-latin-700.ttf
│ ├── open-sans-v26-latin-700.woff
│ ├── open-sans-v26-latin-700.woff2
│ ├── open-sans-v26-latin-700italic.eot
│ ├── open-sans-v26-latin-700italic.svg
│ ├── open-sans-v26-latin-700italic.ttf
│ ├── open-sans-v26-latin-700italic.woff
│ ├── open-sans-v26-latin-700italic.woff2
│ ├── open-sans-v26-latin-800.eot
│ ├── open-sans-v26-latin-800.svg
│ ├── open-sans-v26-latin-800.ttf
│ ├── open-sans-v26-latin-800.woff
│ ├── open-sans-v26-latin-800.woff2
│ ├── open-sans-v26-latin-800italic.eot
│ ├── open-sans-v26-latin-800italic.svg
│ ├── open-sans-v26-latin-800italic.ttf
│ ├── open-sans-v26-latin-800italic.woff
│ ├── open-sans-v26-latin-800italic.woff2
│ ├── open-sans-v26-latin-italic.eot
│ ├── open-sans-v26-latin-italic.svg
│ ├── open-sans-v26-latin-italic.ttf
│ ├── open-sans-v26-latin-italic.woff
│ ├── open-sans-v26-latin-italic.woff2
│ ├── open-sans-v26-latin-regular.eot
│ ├── open-sans-v26-latin-regular.svg
│ ├── open-sans-v26-latin-regular.ttf
│ ├── open-sans-v26-latin-regular.woff
│ └── open-sans-v26-latin-regular.woff2
├── img
│ ├── bg.jpg
│ ├── favicon.ico
│ ├── logo.png
│ └── mail.svg
└── js
│ ├── login.js
│ └── script.js
├── templates
├── dashboard
│ ├── dashboard.html
│ └── dashboardUebersicht.html
├── fragments
│ ├── general-head.html
│ ├── menue.html
│ └── navbar.html
├── konfiguration
│ ├── konfigFormular.html
│ ├── konfigServerStatus.html
│ ├── konfigUebersicht.html
│ ├── konfiguration.html
│ └── notselfsignedFormular.html
├── konndns
│ └── dnsEintragUebersicht.html
├── konnektor
│ └── konnektorFormular.html
├── konnntp
│ └── ntpUebersicht.html
├── konnvzd
│ └── vzdEintragUebersicht.html
├── konnwebservice
│ ├── cardTerminalUebersicht.html
│ ├── cardUebersicht.html
│ ├── certificateUebersicht.html
│ ├── encryptionUebersicht.html
│ ├── eventUebersicht.html
│ └── verifyPinUebersicht.html
├── log
│ ├── logDetails.html
│ ├── logUebersicht.html
│ ├── pop3log.html
│ └── smtplog.html
├── login.html
├── minimalkonfiguration
│ ├── minimalKonfigFormular.html
│ └── minimalKonfiguration.html
├── pipelineoperationtest
│ ├── OpenKIM_DecryptTextTest_Formular.html
│ ├── OpenKIM_DecryptVerifyMailTest_Formular.html
│ ├── OpenKIM_EncryptTextTest_Formular.html
│ ├── OpenKIM_GetJobNumber_Formular.html
│ ├── OpenKIM_ReadMailTest_Formular.html
│ ├── OpenKIM_SendMailTest_Formular.html
│ ├── OpenKIM_SignEncryptMailTest_Formular.html
│ ├── pipelineoperationtest.html
│ └── pipelineoperationtestFormular.html
└── user
│ └── userSettings.html
└── test_sds_descr
└── connector_sds.xml
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | * @sberg-net
2 |
--------------------------------------------------------------------------------
/.github/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | **Thank you for taking the time to contribute to the development of OpenKIM!**
2 |
3 | Please follow these rules when making contributions to this repository.
4 |
5 | # Source code
6 |
7 | ## Unwanted contributions
8 |
9 | 1. Changes to configurations without justifiable reason
10 | 2. New interactions that are confusing to use for end users
11 | 3. Breaking changes to already existing code, unless strictly necessary
12 | 4. Unnecessarily large restructurings of code
13 |
14 | ## Code rules
15 |
16 | ### Verified as working
17 |
18 | All code contributed to this repository should be verified as working, meaning you've tested the functionality at least once and didn't encounter unexpected behaviour.
19 | Please keep in mind that we might ask you to confirm if this is the case.
20 |
21 | ### Codestyle
22 |
23 | TODO
24 |
25 | ## Code practices
26 |
27 | ### Database operations
28 |
29 | TODO
30 |
31 | [...]
32 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | labels: bug
5 |
6 | ---
7 |
8 | **Describe the bug**
9 | A clear and concise description of what the bug is.
10 |
11 | **To Reproduce**
12 | Steps to reproduce the behavior:
13 | 1. Go to '...'
14 | 2. Click on '....'
15 | 3. Scroll down to '....'
16 | 4. See error
17 |
18 | **Expected behavior**
19 | A clear and concise description of what you expected to happen.
20 |
21 | **Screenshots**
22 | If applicable, add screenshots to help explain your problem.
23 |
24 | **Additional context**
25 | Add any other context about the problem here.
26 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: true
2 | contact_links:
3 | - name: Homepage
4 | url: mailto:software@sberg.net
5 | about: Want more direct support? Contact us
6 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | labels: feature request
5 |
6 | ---
7 |
8 | **What's your feature request about?**
9 | > A short one-to-two-sentence description of your feature request
10 |
11 | **Is your feature request related to a problem you're having? Please describe.**
12 | > A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
13 |
14 | **Describe the solution you'd like**
15 | > A clear and concise description of what you want to happen.
16 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | # Please check the following boxes
2 | > All boxes are required
3 |
4 | - [ ] I agree to the [Contribution Guidelines](https://github.com/sberg-net/openkim/blob/master/.github/CONTRIBUTING.md) and to the [Code of Conduct](https://github.com/sberg-net/openkim/blob/master/.github/CODE_OF_CONDUCT.md)
5 | - [ ] I tested my code and I verified it's working to the best of my ability
6 |
7 | # Describe your pull request
8 |
9 | > A short one-to-two sentence description of your pull request
10 |
11 | **Why is this change needed?**
12 |
13 | > Please explain why the changes you're proposing are beneficial or required
14 |
15 | **Does your pull request solve an open issue? If yes, please mention what one**
16 |
17 | > See https://help.github.com/en/articles/closing-issues-using-keywords
18 |
--------------------------------------------------------------------------------
/.github/SECURITY.md:
--------------------------------------------------------------------------------
1 | # Security Policy
2 |
3 | We take security seriously, and we strive to keep our software as secure as possible.
4 | That being said, nothing is ever 100% secure, if you've found a potential security issue we'd love to know about it.
5 |
6 | ### Reporting security issues
7 |
8 | If you've found a security issue and wish to discuss it with the team directly, please email us at `software@sberg.net`.
9 | We'll determine a course of action from that point onward, and we'll strive to keep you updated.
10 |
11 | If you feel like the issue is too minor for email, feel free to open an issue instead.
12 |
13 | ### Supported versions
14 |
15 | Currently we're interested in issues for the current major release, code in the `main` branch, or code in any active development branch.
16 |
--------------------------------------------------------------------------------
/.github/SUPPORT.md:
--------------------------------------------------------------------------------
1 | # Support
2 |
3 | This article explains where to get help with remark.
4 | Please read through the following guidelines.
5 |
6 | > 👉 **Note**: before participating in our community, please read our
7 | > [code of conduct][COC].
8 | > By interacting with this repository, organization, or community you agree to
9 | > abide by its terms.
10 |
11 | ### Check the quickstart guide
12 |
13 | See [`QuickStartGuide.md`][QUICKSTART].
14 |
15 | ### Try the documentation
16 |
17 | Todo
18 |
19 | ## Contributions
20 |
21 | See [`CONTRIBUTING.md`][CONTRIBUTING] on how to contribute.
22 |
23 |
24 |
25 | [COC]: https://github.com/sberg-net/openkim/blob/main/.github/CODE_OF_CONDUCT.md
26 | [CONTRIBUTING]: CONTRIBUTING.md
27 | [QUICKSTART]: https://github.com/sberg-net/openkim/blob/main/doc/QuickStartGuide.md
28 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**/target/
5 | !**/src/test/**/target/
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | .idea/**
19 | *.iws
20 | *.iml
21 | *.ipr
22 |
23 | ### NetBeans ###
24 | /nbproject/private/
25 | /nbbuild/
26 | /dist/
27 | /nbdist/
28 | /.nb-gradle/
29 | build/
30 | !**/src/main/**/build/
31 | !**/src/test/**/build/
32 |
33 | data_old
34 | data_old/**
35 | data
36 | data/**
37 | api/api-telematik
38 | api/api-telematik/**
39 | api-telematik
40 | api-telematik/**
41 | /internals
42 | internalDocs
43 | internalDocs/**
44 | logs
45 | logs/**
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | All notable changes to this project will be documented in this file.
4 |
5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7 |
8 | ## [Unreleased]
9 |
10 | ### Added
11 |
12 | ### Changed
13 |
14 | ### Fixed
15 |
16 | ## [0.19.2]
17 |
18 | ### Fixed
19 | - Startseite kann nicht aufgerufen werden (thymeleaf template exeception, Änderungen in Version 3.1)
20 |
21 | ## [0.19.1]
22 |
23 | ### Security
24 | - Vulnerabilities updates
25 | - spring-boot-parent
26 | - webjars-locator
27 | - snakeyaml
28 |
29 | ## [0.19.0]
30 |
31 | ### Added
32 |
33 | - arm64 docker image to dockerHub
34 |
35 | ### Changed
36 |
37 | - refactor release action
38 |
39 | ## [0.18.1]
40 |
41 | ### Fixed
42 |
43 | - integration des BouncyCastleJsseProvider und bouncy castle versionen 1.75
44 |
45 |
46 | ## [0.17.0]
47 |
48 | ### Added
49 |
50 | - Fehlerbehebungen
51 | - 6 Pipeline-Operationen, die der Nutzer über die OpenKIM-Oberfläche testen kann
52 | - Verschlüsseln eines beliebigen Textes mit einem Konnektor der Wahl,
53 | der aber in OpenKIM konfiguriert sein muss
54 | - Entschlüsseln eines Textes
55 | - Senden einer Mail über das OpenKIM-SMTP-Gateway
56 | - Empfangen einer Mail über das OpenKIM-POP3-Gateway
57 | - Signieren und Verschlüsseln einer Mail (ohne Versand) und Ausgabe der Mail
58 | - Entschlüsseln und Signaturüberprüfung einer verschlüsselten Mail, die der Nutzer komplett angeben muss
59 |
60 | ## [0.16.0]
61 |
62 | ### Added
63 |
64 | - Integration von KAS
65 | - Fehlerbehebungen
66 |
67 | ## [0.15.0]
68 |
69 | ### Added
70 |
71 | - Integrieren von Testmöglichkeiten für alle gewünschten Pipeline-Operationen
72 | - Aufruf der Tests von Weboberfläche
73 |
74 | ## [0.14.1]
75 |
76 | ### Fixed
77 |
78 | - Pipeline-Operationen
79 |
80 |
81 | ## [0.14.0]
82 |
83 | ### Added
84 |
85 | - OpenKIM im Modus keine TI getestet
86 | - SMTP/POP3 - Protokoll des Gateways getestet
87 |
88 |
89 | ## [0.13.1]
90 |
91 | ### Fixed
92 |
93 | - Pipeline-Struktur
94 |
95 |
96 | ## [0.13.0]
97 |
98 | ### Added
99 |
100 | - Hinzufügen einer Pipeline-Struktur für die Operationen (z.b. Signieren einer Mail)
101 | - bessere Test- und Erweiterbarkeit
102 | - besseres Handling der Komplexität
103 | - Testen von drei Szenarien
104 | - Testen komplet ohne TI mit "handelsüblichen" Mailservern -> Checken, ob der POP3/SMTP-Stack funktioniert
105 | - Testen ohne Fachdienst-Servern, mit Konnektor und mit "handelsüblichen" Mailservern -> Checken, ob die Konnektor-Kommunikation funktioniert
106 | - Testen "Fullstack" -> mit Fachdienst-Servern und Konnektor
107 | - Weitere Umbauarbeiten
108 |
109 | ## [0.12.0]
110 |
111 | ### Added
112 |
113 | - Hinzufügen einer Pipeline-Struktur für die Operationen (z.b. Signieren einer Mail)
114 | - bessere Test- und Erweiterbarkeit
115 |
116 |
117 | ## [0.9.0]
118 |
119 | ### Added
120 |
121 | - Erstellen des Git-Repositorys
122 | - Github Actions
123 | - Dockerfile inklusive build und push zu [Dockerhub]
124 |
--------------------------------------------------------------------------------
/COPYRIGHT.md:
--------------------------------------------------------------------------------
1 | Copyright and license policy
2 | ============================
3 |
4 | Copyright (C) 2022-present sberg it-systeme GmbH
5 |
6 | This program is free software: you can redistribute it and/or modify it under the terms of the license.
7 |
8 | This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more details.
9 |
10 | License
11 | -------
12 | All released source code should by default be licensed under EUROPEAN UNION PUBLIC LICENCE v. 1.2.
13 | Exceptions may be made to this policy on a case-by-case basis.
14 |
15 | For full license conditions, including applicable addendums specific to this program, see the LICENSE.md file, which you should have received along with this notice. If not, check [here][0].
16 |
17 | [0]: https://github.com/sberg-net/openkim/blob/main/LICENSE
18 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # OpenKIM
2 |
3 | [](https://github.com/sberg-net/openkim/actions/workflows/release.yml)
4 |
5 | Implementieren eines KIM-Client-Moduls laut Spezifikation:
6 | https://fachportal.gematik.de/fachportal-import/files/gemSpec_CM_KOMLE_V1.16.0.pdf
7 |
8 | > Die Zulassung der Gematik ist noch nicht erfolgt!! OpenKIM darf deshalb nicht als KIM-Clientmodul betrieben werden.
9 |
10 | ## Docker Images
11 | Docker Images stehen auf [Docker Hub](https://hub.docker.com/r/sbergit/openkim) zur Verfühgung.
12 |
13 | ## aktuelle Einsatzgebiete von OpenKIM
14 | Viele setzen OpenKIM als Monitoring-Werkzeug ein, um z.b. zu checken,
15 | ob der TI-Konnektor mit der TI verbunden ist. Weitere Monitoring- und Diagnosemöglichkeiten sind
16 | implementiert (Kartenhandling etc.)
17 |
18 |
19 | ## OpenKIM starten
20 |
21 | > ### [OpenKIM QuickStart Guide](doc/QuickStartGuide.md)
22 |
23 | # Wöchentliche Community Runde
24 |
25 | Jeden Freitag um 14 Uhr bieten wir ein Zoom-Meeting an: https://us06web.zoom.us/j/82998471898?pwd=WlVwN3Z1NXBaNTFxSGdHMW96aThvUT09
26 |
--------------------------------------------------------------------------------
/doc/QuickStartGuide.md:
--------------------------------------------------------------------------------
1 | # QuickStart Guide
2 | Kurze Beschreibung zum Start von OpenKIM auf Basis der SpringBoot JAR.
3 |
4 | ## Veraussetzungen
5 | * OS: Windows, Linux, Mac
6 | * JavaVM: ab Version 11 (z.B. openjdk 14.0.2)
7 | * Console / Terminal
8 |
9 | ## Download
10 | * Ordner `openkim` anlegen (Ort deiner Wahl)
11 | * neueste Version der JAR [vom OpenKIM Projekt herunterladen][1] z.B. [OpenKIM-0.9.0][2]
12 | * Die Datei `openkim-$VERSION.jar` in den Ordner `openkim` kopieren
13 |
14 | ## OpenKIM starten
15 | * Console / Terminal öffnen
16 | * in Ordner `openkim` wechseln
17 | * folgendes Commando absetzen (die Console bleibt offen und OpenKIM log in die Console):
18 | ```shell
19 | java -jar openkim-*.jar
20 |
21 | . ____ _ __ _ _
22 | /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
23 | ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
24 | \\/ ___)| |_)| | | | | || (_| | ) ) ) )
25 | ' |____| .__|_| |_|_| |_\__, | / / / /
26 | =========|_|==============|___/=/_/_/_/
27 | :: Spring Boot :: (v2.6.3)
28 | ```
29 |
30 | ## OpenKIM öffnen und anmelden
31 | * Browser öffnen und folgende URL eingeben: http://localhost:8080
32 | * auf der Startseite oben Rechts auf `Anmelden` klicken
33 | * User: admin Password: admin
34 | * Seite "Minimale Konfiguration" öffnet sich
35 |
36 | [1]: https://github.com/sberg-net/openkim/releases
37 | [2]: https://github.com/sberg-net/openkim/releases/tag/OpenKIM-0.9.0
38 |
--------------------------------------------------------------------------------
/docker/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM amazoncorretto:17-alpine3.16-jdk
2 |
3 | ENV APP-PROFILES="default"
4 | ENV LOG-LEVEL="INFO"
5 | ENV HTTP-PORT="8080"
6 | ENV VZD-LDAP-BASE="dc=data,dc=vzd"
7 |
8 | RUN mkdir /opt/openkim
9 | COPY target/openkim-*.jar /opt/openkim/app.jar
10 |
11 | ENV TZ=Europe/Berlin
12 | RUN apk add --no-cache tzdata bash
13 |
14 | ENTRYPOINT ["java", \
15 | "-Dspring.profiles.active=${APP-PROFILES}", \
16 | "-Dlogging.level.root=${LOG-LEVEL}",\
17 | "-Dserver.port=${HTTP-PORT}",\
18 | "-Dspring.ldap.base=${VZD-LDAP-BASE}",\
19 | "-jar","/opt/openkim/app.jar"]
20 |
--------------------------------------------------------------------------------
/docker/README.md:
--------------------------------------------------------------------------------
1 | # OpenKIM Docker Image
2 |
3 | openKIM kann voll funktionsfähig in einer Docker oder Kubernetes Umgebung verwendet werden.
4 | Dazu stellen wir openKIM Docker Images auf Basis der openKIM Releases zu Verfügung.
5 |
6 | ## Start openKIM docker
7 |
8 | ```
9 | docker run --name openKIM -p 8080:8080 sbergit/openkim:latest
10 | ```
11 |
12 | ### Container Volumes
13 |
14 | | Container Verzeichnis | Inhalt |
15 | |-----------------------|-----------------------------------------------------------|
16 | | /data | persistante und flüchtige Daten z.B.
Anmeldedaten |
17 | | /logs | openKIM logfiles |
18 |
19 | ## Docker Compose Beispiel
20 |
21 | ```yaml
22 | version: '3.1'
23 | services:
24 | openkim:
25 | image: sbergit/openkim:latest
26 | container_name: openKIM
27 | restart: always
28 | environment:
29 | TZ: Europe/Berlin
30 | volumes:
31 | - ./vol/data:/data
32 | - ./vol/logs:/logs
33 | ports:
34 | - "8080:8080"
35 | ```
36 |
37 | ## Docker Evironment Parameter
38 |
39 | | Name | Beschreibung | Values | default |
40 | |---------------|-------------------------|------------------------------------|---------------|
41 | | TZ | Timezone des Containers | tzdata zones (z.B. Europe/Berlin) | Europe/Berlin |
42 | | LOG-LEVEL | rool Log-Level | ERROR,INFO,DEBUG | INFO |
43 | | HTTP-PORT | HTTP GUI Server Port | Port Nummer (z.B. 8080) | 8080 |
44 | | VZD-LDAP-BASE | VZD LDAP Base | String | dc=data,dc=vz |
45 |
46 | > Bei nicht gesetzten Parametern werden die default Werte gesetzt!
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/AppConfig.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 |
18 | package net.sberg.openkim;
19 |
20 | import jakarta.annotation.PostConstruct;
21 | import org.bouncycastle.jce.provider.BouncyCastleProvider;
22 | import org.bouncycastle.jsse.provider.BouncyCastleJsseProvider;
23 | import org.slf4j.Logger;
24 | import org.slf4j.LoggerFactory;
25 | import org.springframework.boot.web.servlet.FilterRegistrationBean;
26 | import org.springframework.context.annotation.Bean;
27 | import org.springframework.context.annotation.ComponentScan;
28 | import org.springframework.context.annotation.Configuration;
29 | import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
30 | import org.springframework.web.filter.CharacterEncodingFilter;
31 | import org.springframework.web.servlet.view.json.MappingJackson2JsonView;
32 |
33 | import java.security.Security;
34 |
35 | @Configuration
36 | @ComponentScan({"net.sberg.openkim"})
37 | public class AppConfig {
38 |
39 | protected static final Logger log = LoggerFactory.getLogger(AppConfig.class);
40 |
41 | @PostConstruct
42 | public void init() throws Exception {
43 | Security.insertProviderAt(new BouncyCastleProvider(), 1);
44 | Security.insertProviderAt(new BouncyCastleJsseProvider(), 1);
45 | }
46 |
47 | @Bean
48 | public static PropertySourcesPlaceholderConfigurer propertyConfig() {
49 | return new PropertySourcesPlaceholderConfigurer();
50 | }
51 |
52 | @Bean
53 | public FilterRegistrationBean> filterRegistrationBean() {
54 | FilterRegistrationBean registrationBean = new FilterRegistrationBean<>();
55 | CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
56 | characterEncodingFilter.setForceEncoding(true);
57 | characterEncodingFilter.setEncoding("UTF-8");
58 | registrationBean.setFilter(characterEncodingFilter);
59 | return registrationBean;
60 | }
61 |
62 | @Bean
63 | public MappingJackson2JsonView jsonView() {
64 | return new MappingJackson2JsonView();
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/JasperReportConfig.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim;
18 |
19 | import net.sf.jasperreports.engine.JasperCompileManager;
20 | import net.sf.jasperreports.engine.JasperReport;
21 | import net.sf.jasperreports.engine.design.JasperDesign;
22 | import net.sf.jasperreports.engine.xml.JRXmlLoader;
23 | import org.springframework.beans.factory.annotation.Autowired;
24 | import org.springframework.context.ApplicationContext;
25 | import org.springframework.context.annotation.Bean;
26 | import org.springframework.context.annotation.Configuration;
27 | import org.springframework.core.io.Resource;
28 |
29 | import java.io.InputStream;
30 |
31 | @Configuration
32 | public class JasperReportConfig {
33 |
34 | private static final String JASPER_REPORT_DIR = "classpath:/reports/";
35 | private static final String REPORT_DATA_KEY = "datasource";
36 |
37 | @Autowired
38 | private ApplicationContext applicationContext;
39 |
40 | private JasperReport loadReport(String url) throws Exception {
41 | Resource resource = applicationContext.getResource(url);
42 | InputStream is = resource.getInputStream();
43 | JasperDesign design = JRXmlLoader.load(is);
44 | return JasperCompileManager.compileReport(design);
45 | }
46 |
47 | @Bean(name = "signaturpruefbericht")
48 | public JasperReport signaturpruefbericht() throws Exception {
49 | return loadReport(JASPER_REPORT_DIR + "signaturpruefbericht.jrxml");
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/MainWebAppInitializer.java:
--------------------------------------------------------------------------------
1 | package net.sberg.openkim;
2 |
3 | import jakarta.servlet.MultipartConfigElement;
4 | import jakarta.servlet.ServletContext;
5 | import jakarta.servlet.ServletRegistration;
6 | import org.springframework.web.WebApplicationInitializer;
7 | import org.springframework.web.context.support.GenericWebApplicationContext;
8 | import org.springframework.web.servlet.DispatcherServlet;
9 |
10 | public class MainWebAppInitializer implements WebApplicationInitializer {
11 |
12 | @Override
13 | public void onStartup(ServletContext sc) {
14 |
15 | ServletRegistration.Dynamic appServlet = sc.addServlet("mvc", new DispatcherServlet(
16 | new GenericWebApplicationContext()));
17 |
18 | appServlet.setLoadOnStartup(1);
19 |
20 | String TMP_FOLDER = "/tmp";
21 | int MAX_UPLOAD_SIZE = 5 * 1024 * 1024;
22 | MultipartConfigElement multipartConfigElement = new MultipartConfigElement(TMP_FOLDER,
23 | MAX_UPLOAD_SIZE, MAX_UPLOAD_SIZE * 2, MAX_UPLOAD_SIZE / 2);
24 |
25 | appServlet.setMultipartConfig(multipartConfigElement);
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/OpenkimApplication.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim;
18 |
19 | import org.springframework.boot.SpringApplication;
20 | import org.springframework.boot.autoconfigure.SpringBootApplication;
21 |
22 | @SpringBootApplication
23 | public class OpenkimApplication {
24 | public static void main(String[] args) {
25 | SpringApplication.run(net.sberg.openkim.OpenkimApplication.class, args);
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/common/EnumAuthRole.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.common;
18 |
19 | public enum EnumAuthRole {
20 | ROLE_ADMIN("ADMIN"),
21 | ROLE_MONITORING("MONITORING");
22 |
23 | private final String suffix;
24 |
25 | EnumAuthRole(String suffix) {
26 | this.suffix = suffix;
27 | }
28 |
29 | public String getSuffix() {
30 | return suffix;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/common/EnumMailAuthMethod.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.common;
18 |
19 | public enum EnumMailAuthMethod {
20 | NONE("Keine"), NORMALPWD("Normales Passwort");
21 |
22 | private final String hrText;
23 |
24 | EnumMailAuthMethod(String hrText) {
25 | this.hrText = hrText;
26 | }
27 |
28 | public String getHrText() {
29 | return hrText;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/common/EnumMailConnectionSecurity.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.common;
18 |
19 | public enum EnumMailConnectionSecurity {
20 | NONE("Keine"), STARTTLS("StartTLS"), SSLTLS("SSL/TLS");
21 |
22 | private final String hrText;
23 |
24 | EnumMailConnectionSecurity(String hrText) {
25 | this.hrText = hrText;
26 | }
27 |
28 | public String getHrText() {
29 | return hrText;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/common/GlobalController.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.common;
18 |
19 | import jakarta.servlet.http.HttpServletRequest;
20 | import org.springframework.web.bind.annotation.ControllerAdvice;
21 | import org.springframework.web.bind.annotation.ModelAttribute;
22 |
23 | @ControllerAdvice
24 | public class GlobalController {
25 | @ModelAttribute("requestPath")
26 | String getRequestServletPath(HttpServletRequest request) {
27 | return request.getServletPath();
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/common/ICommonConstants.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.common;
18 |
19 | import java.io.File;
20 |
21 | public interface ICommonConstants {
22 | String BASE_DIR = System.getProperty("user.dir") + File.separator + "data" + File.separator;
23 | String CONFIG_FILENAME = BASE_DIR + "config.cfg";
24 | String POP3_LOG_DIR = BASE_DIR + "pop3" + File.separator;
25 | String POP3_LOG_FILENAME = POP3_LOG_DIR + "{0}.log";
26 | String SMTP_LOG_DIR = BASE_DIR + "smtp" + File.separator;
27 | String SMTP_LOG_FILENAME = SMTP_LOG_DIR + "{0}.log";
28 | String KONNEKTOR_DIR = BASE_DIR + "konnektor" + File.separator + "{0}" + File.separator;
29 | String KONNEKTOR_TRUSTORE_JKS = KONNEKTOR_DIR + "truststore.jks";
30 | String KONNEKTOR_TRUSTORE_JKS_PWD = "changeit";
31 | String KONNEKTOR_TRUSTORE_JKS_CERT_ALIAS = "servercert";
32 | String OPENKIM_SERVER_KEYSTORE_FILENAME = "openkimkeystore.jks";
33 | String OPENKIM_SERVER_KEYSTORE_ALIAS = "openkimkeystorealias_";
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/common/metrics/DefaultMetric.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.common.metrics;
18 |
19 | import net.sberg.openkim.log.DefaultLogger;
20 | import org.apache.james.metrics.api.Metric;
21 |
22 | import java.text.MessageFormat;
23 | import java.util.concurrent.atomic.AtomicInteger;
24 |
25 | public class DefaultMetric implements Metric {
26 |
27 | private final AtomicInteger value;
28 | private final String metricName;
29 |
30 | private DefaultLogger logger;
31 |
32 | private DefaultMetric(String metricName) {
33 | this.metricName = metricName;
34 | value = new AtomicInteger();
35 | }
36 |
37 | public DefaultMetric(String metricName, DefaultLogger logger) {
38 | this(metricName);
39 | this.logger = logger;
40 | }
41 |
42 | @Override
43 | public void increment() {
44 | value.incrementAndGet();
45 | }
46 |
47 | @Override
48 | public void decrement() {
49 | value.decrementAndGet();
50 | }
51 |
52 | @Override
53 | public void add(int i) {
54 | value.addAndGet(i);
55 | }
56 |
57 | @Override
58 | public void remove(int i) {
59 | value.addAndGet(-1 * i);
60 | }
61 |
62 | @Override
63 | public long getCount() {
64 | long counter = value.longValue();
65 | if (counter < 0) {
66 | logger.logLine(MessageFormat.format("counter value({0}) of the metric '{0}' should not be a negative number", String.valueOf(value), metricName));
67 | return 0;
68 | }
69 |
70 | return counter;
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/common/metrics/DefaultMetricFactory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.common.metrics;
18 |
19 | import net.sberg.openkim.log.DefaultLogger;
20 | import org.apache.james.metrics.api.Metric;
21 | import org.apache.james.metrics.api.MetricFactory;
22 | import org.apache.james.metrics.api.TimeMetric;
23 | import org.reactivestreams.Publisher;
24 | import reactor.core.publisher.Flux;
25 |
26 | import static org.apache.james.metrics.api.TimeMetric.ExecutionResult.DEFAULT_100_MS_THRESHOLD;
27 |
28 | public class DefaultMetricFactory implements MetricFactory {
29 |
30 | private DefaultLogger logger;
31 |
32 | @Override
33 | public Metric generate(String name) {
34 | return new DefaultMetric(name, logger);
35 | }
36 |
37 | @Override
38 | public TimeMetric timer(String name) {
39 |
40 | if (logger.getDefaultLoggerContext().isHtmlMode()) {
41 | logger.logLine("metric begin for: " + name + "");
42 | } else {
43 | logger.logLine("metric begin for: " + name);
44 | }
45 |
46 | logger.handleDepth(1);
47 | return new DefaultTimeMetric(name, logger);
48 | }
49 |
50 | private DefaultMetricFactory() {
51 | }
52 |
53 | public DefaultMetricFactory(DefaultLogger logger) {
54 | this.logger = logger;
55 | }
56 |
57 | @Override
58 | public Publisher decoratePublisherWithTimerMetric(String name, Publisher publisher) {
59 | return Flux.using(() -> timer(name),
60 | any -> publisher,
61 | TimeMetric::stopAndPublish);
62 | }
63 |
64 | @Override
65 | public Publisher decoratePublisherWithTimerMetricLogP99(String name, Publisher publisher) {
66 | return Flux.using(() -> timer(name),
67 | any -> publisher,
68 | timer -> timer.stopAndPublish().logWhenExceedP99(DEFAULT_100_MS_THRESHOLD));
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/common/metrics/DefaultTimeMetric.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.common.metrics;
18 |
19 | import com.google.common.base.Stopwatch;
20 | import net.sberg.openkim.log.DefaultLogger;
21 | import org.apache.james.metrics.api.TimeMetric;
22 |
23 | import java.text.MessageFormat;
24 | import java.time.Duration;
25 | import java.util.concurrent.TimeUnit;
26 |
27 | public class DefaultTimeMetric implements TimeMetric {
28 | static class DefaultExecutionResult implements ExecutionResult {
29 | private final Duration elasped;
30 |
31 | DefaultExecutionResult(Duration elasped) {
32 | this.elasped = elasped;
33 | }
34 |
35 | @Override
36 | public Duration elasped() {
37 | return elasped;
38 | }
39 |
40 | @Override
41 | public ExecutionResult logWhenExceedP99(Duration thresholdInNanoSeconds) {
42 | return this;
43 | }
44 | }
45 |
46 | private final String name;
47 | private final Stopwatch stopwatch;
48 |
49 | private DefaultLogger logger;
50 |
51 | private DefaultTimeMetric(String name) {
52 | this.name = name;
53 | this.stopwatch = Stopwatch.createStarted();
54 | }
55 |
56 | public DefaultTimeMetric(String name, DefaultLogger logger) {
57 | this(name);
58 | this.logger = logger;
59 | }
60 |
61 | @Override
62 | public String name() {
63 | return name;
64 | }
65 |
66 | @Override
67 | public ExecutionResult stopAndPublish() {
68 | long elapsed = stopwatch.elapsed(TimeUnit.MILLISECONDS);
69 | logger.handleDepth(-1);
70 |
71 | String text = MessageFormat.format("Time spent in {0}: {1} ms.", name, String.valueOf(elapsed));
72 |
73 | if (logger.getDefaultLoggerContext().isHtmlMode()) {
74 | logger.logLine("" + text + "");
75 | } else {
76 | logger.logLine(text);
77 | }
78 |
79 | return new DefaultExecutionResult(Duration.ofNanos(elapsed));
80 | }
81 |
82 | }
83 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/common/x509/EnumX509ErrorCode.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.common.x509;
18 |
19 | public enum EnumX509ErrorCode {
20 | OK,
21 | MORE_THAN_ONE_TELEMATIKID,
22 | NOT_FOUND,
23 | OTHER
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/common/x509/IssuerAndSerial.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.common.x509;
18 |
19 | import lombok.Data;
20 |
21 | import java.util.Objects;
22 |
23 | @Data
24 | public class IssuerAndSerial {
25 | private String issuer;
26 | private String serialNumber;
27 |
28 | @Override
29 | public boolean equals(Object o) {
30 | if (this == o) return true;
31 | if (o == null || getClass() != o.getClass()) return false;
32 | IssuerAndSerial that = (IssuerAndSerial) o;
33 | return issuer.equals(that.issuer) && serialNumber.equals(that.serialNumber);
34 | }
35 |
36 | @Override
37 | public int hashCode() {
38 | return Objects.hash(issuer, serialNumber);
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/common/x509/TelematikIdResult.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.common.x509;
18 |
19 | import lombok.Data;
20 |
21 | @Data
22 | public class TelematikIdResult {
23 | private String email;
24 | private String icssn;
25 | private String telematikId;
26 | private EnumX509ErrorCode errorCode = EnumX509ErrorCode.OK;
27 |
28 | public String toErrorText() {
29 | StringBuilder resultBuilder = new StringBuilder();
30 | if (email != null && !email.trim().isEmpty()) {
31 | resultBuilder.append("Email: ").append(email);
32 | }
33 | if (icssn != null && !icssn.trim().isEmpty()) {
34 | if (resultBuilder.length() > 0) {
35 | resultBuilder.append(", ");
36 | }
37 | resultBuilder.append("Icssn: ").append(icssn);
38 | }
39 | if (telematikId != null && !telematikId.trim().isEmpty()) {
40 | if (resultBuilder.length() > 0) {
41 | resultBuilder.append(", ");
42 | }
43 | resultBuilder.append("TelematikId: ").append(telematikId);
44 | }
45 | return resultBuilder.toString();
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/common/x509/X509CertificateResult.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.common.x509;
18 |
19 | import lombok.Data;
20 | import net.sberg.openkim.pipeline.operation.konnektor.vzd.VzdResult;
21 |
22 | import java.util.ArrayList;
23 | import java.util.List;
24 | import java.util.Objects;
25 |
26 | @Data
27 | public class X509CertificateResult {
28 | private String mailAddress;
29 | private TelematikIdResult telematikIdResult;
30 | private List vzdResults;
31 | private List certs = new ArrayList<>();
32 | private List rsaCerts = new ArrayList<>();
33 | private EnumX509ErrorCode errorCode = EnumX509ErrorCode.OK;
34 |
35 | @Override
36 | public boolean equals(Object o) {
37 | if (this == o) return true;
38 | if (o == null || getClass() != o.getClass()) return false;
39 | X509CertificateResult that = (X509CertificateResult) o;
40 | return Objects.equals(mailAddress, that.mailAddress);
41 | }
42 |
43 | @Override
44 | public int hashCode() {
45 | return Objects.hash(mailAddress);
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/common/x509/X509CertificateUtils.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.common.x509;
18 |
19 | import org.bouncycastle.asn1.ASN1ObjectIdentifier;
20 | import org.bouncycastle.asn1.isismtt.x509.AdmissionSyntax;
21 | import org.bouncycastle.asn1.isismtt.x509.Admissions;
22 | import org.bouncycastle.asn1.isismtt.x509.ProfessionInfo;
23 | import org.bouncycastle.asn1.x509.Extension;
24 | import org.bouncycastle.cert.X509CertificateHolder;
25 | import org.slf4j.Logger;
26 | import org.slf4j.LoggerFactory;
27 |
28 | public class X509CertificateUtils {
29 |
30 | private static final Logger log = LoggerFactory.getLogger(X509CertificateUtils.class);
31 |
32 | public static final TelematikIdResult extractTelematikId(byte[] certBytes, TelematikIdResult telematikIdResult) {
33 | try {
34 | if (!telematikIdResult.getErrorCode().equals(EnumX509ErrorCode.OK)) {
35 | return telematikIdResult;
36 | }
37 | X509CertificateHolder certificateHolder = new X509CertificateHolder(certBytes);
38 | Extension extension = certificateHolder.getExtension(new ASN1ObjectIdentifier("1.3.36.8.3.3"));
39 | AdmissionSyntax admissionSyntax = AdmissionSyntax.getInstance(extension.getParsedValue());
40 | Admissions[] admissions = admissionSyntax.getContentsOfAdmissions();
41 | for (Admissions ad : admissions) {
42 | ProfessionInfo[] professionInfos = ad.getProfessionInfos();
43 | for (ProfessionInfo professionInfo : professionInfos) {
44 | String telematikId = professionInfo.getRegistrationNumber();
45 | if (telematikIdResult.getTelematikId() == null || telematikIdResult.getTelematikId().trim().isEmpty()) {
46 | telematikIdResult.setTelematikId(telematikId);
47 | } else if (!telematikIdResult.getTelematikId().equals(telematikId)) {
48 | telematikIdResult.setErrorCode(EnumX509ErrorCode.MORE_THAN_ONE_TELEMATIKID);
49 | return telematikIdResult;
50 | }
51 | }
52 | }
53 | } catch (Exception e) {
54 | log.error("error on extracting telematik id: " + telematikIdResult.toErrorText(), e);
55 | telematikIdResult.setErrorCode(EnumX509ErrorCode.OTHER);
56 | }
57 | return telematikIdResult;
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/dashboard/KonnektorMonitoringCardResult.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.dashboard;
18 |
19 | import lombok.Data;
20 |
21 | @Data
22 | public class KonnektorMonitoringCardResult {
23 | private String pinStatus;
24 | private String cardTerminal;
25 | private String cardSlot;
26 | private String cardHandle;
27 | private String cardType;
28 | private String pinTyp;
29 | private String iccsn;
30 | private String telematikId;
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/dashboard/KonnektorMonitoringFachdienstResult.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.dashboard;
18 |
19 | import lombok.Data;
20 | import net.sberg.openkim.fachdienst.EnumFachdienst;
21 |
22 | @Data
23 | public class KonnektorMonitoringFachdienstResult {
24 | private EnumFachdienst typ;
25 |
26 | private String smtpDomain;
27 | private String smtpIpAddress;
28 |
29 | private String pop3Domain;
30 | private String pop3IpAddress;
31 |
32 | private String kasDomain;
33 | private String kasIpAddress;
34 | private String kasPort;
35 | private String kasContextPath;
36 |
37 | private String accmgrDomain;
38 | private String accmgrIpAddress;
39 | private String accmgrPort;
40 | private String accmgrContextPath;
41 |
42 | private boolean errorOnCreating;
43 | private boolean accmgrInitialized;
44 | private boolean kasInitialized;
45 | private boolean timedOut;
46 |
47 | public String getKasApiUrl() {
48 | if (getKasIpAddress() != null) {
49 | return "https://" + getKasIpAddress() + ":" + getKasPort() + getKasContextPath() + "/attachments/v2.2";
50 | }
51 | return "-";
52 | }
53 |
54 | public String getAmApiUrl() {
55 | if (getAccmgrIpAddress() != null) {
56 | return "https://" + getAccmgrIpAddress() + ":" + getAccmgrPort() + getAccmgrContextPath();
57 | }
58 | return "-";
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/dashboard/KonnektorMonitoringResult.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.dashboard;
18 |
19 | import lombok.Data;
20 | import net.sberg.openkim.konfiguration.EnumTIEnvironment;
21 |
22 | import java.util.ArrayList;
23 | import java.util.Date;
24 | import java.util.List;
25 |
26 | @Data
27 | public class KonnektorMonitoringResult {
28 |
29 | private String ip;
30 | private EnumTIEnvironment tiEnvironment;
31 | private boolean connectedWithTI;
32 | private boolean connectedWithSIS;
33 | private boolean eccEncryptionAvailable;
34 | private Date konnektorTime;
35 | private Date systemTime;
36 | private long diffSystemKonnektorTime;
37 | private boolean vzdAlive;
38 | private boolean tlsPortAlive;
39 | private List fachdienstResults = new ArrayList<>();
40 | private List webserviceResults = new ArrayList<>();
41 | private List cardResults = new ArrayList<>();
42 |
43 | public String getKonnektorHeadline() {
44 | return ip + " - " + tiEnvironment.getHrText();
45 | }
46 |
47 | }
48 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/dashboard/KonnektorMonitoringWebserviceResult.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.dashboard;
18 |
19 | import lombok.Data;
20 | import net.sberg.openkim.konnektor.EnumKonnektorServiceBeanType;
21 |
22 | @Data
23 | public class KonnektorMonitoringWebserviceResult {
24 | private EnumKonnektorServiceBeanType type;
25 | private String endpoint;
26 | private boolean alive;
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/fachdienst/EnumFachdienst.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.fachdienst;
18 |
19 | public enum EnumFachdienst {
20 | ARVATO(
21 | "Arvato",
22 | "mail.arv.kim.telematik",
23 | "arv.kim.telematik"
24 | ),
25 | TSYSTEMS(
26 | "T-Systems",
27 | "lb-mail.tsi.kim.telematik",
28 | "tsi.kim.telematik"
29 | ),
30 | CGM(
31 | "CGM",
32 | "mail.tm.kim.telematik",
33 | "tm.kim.telematik"
34 | ),
35 | IBM(
36 | "IBM",
37 | "mail.ibm.kim.telematik",
38 | "ibm.kim.telematik"
39 | ),
40 | RISE(
41 | "RISE",
42 | "mail.bitmarck.kim.telematik",
43 | "bitmarck.kim.telematik"
44 | ),
45 | AKQUINET(
46 | "Akquinet",
47 | "mail.akquinet.kim.telematik",
48 | "akquinet.kim.telematik"
49 | );
50 |
51 | private final String name;
52 | private final String domain;
53 | private final String domainSuffix;
54 |
55 | EnumFachdienst(
56 | String name,
57 | String domain,
58 | String domainSuffix
59 | ) {
60 | this.name = name;
61 |
62 | this.domain = domain;
63 | this.domainSuffix = domainSuffix;
64 | }
65 |
66 | public String getName() {
67 | return name;
68 | }
69 |
70 | public String getDomain() {
71 | return domain;
72 | }
73 |
74 | public String getDomainSuffix() {
75 | return domainSuffix;
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/fachdienst/EnumFachdienstDomainDescrId.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.fachdienst;
18 |
19 | public enum EnumFachdienstDomainDescrId {
20 | SMTP, POP3, AM, KAS
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/fachdienst/Fachdienst.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.fachdienst;
18 |
19 | import lombok.Data;
20 |
21 | @Data
22 | public class Fachdienst {
23 | private EnumFachdienst typ;
24 |
25 | private String smtpDomain;
26 | private String smtpIpAddress;
27 |
28 | private String pop3Domain;
29 | private String pop3IpAddress;
30 |
31 | private String kasDomain;
32 | private String kasIpAddress;
33 | private String kasPort;
34 | private String kasContextPath;
35 |
36 | private String accmgrDomain;
37 | private String accmgrIpAddress;
38 | private String accmgrPort;
39 | private String accmgrContextPath;
40 |
41 | private boolean errorOnCreating;
42 | private boolean accmgrInitialized;
43 | private boolean kasInitialized;
44 | private boolean timedOut;
45 | private de.gematik.kim.kas.api.AttachmentsApi attachmentsApi;
46 | }
47 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/fachdienst/FachdienstDescr.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.fachdienst;
18 |
19 | import lombok.Data;
20 | import net.sberg.openkim.konfiguration.EnumTIEnvironment;
21 |
22 | import java.util.ArrayList;
23 | import java.util.Iterator;
24 | import java.util.List;
25 |
26 | @Data
27 | public class FachdienstDescr {
28 | private EnumFachdienst id;
29 | private List services;
30 |
31 | public List extractDomainDescr(EnumFachdienstDomainDescrId id, EnumTIEnvironment env) {
32 | List result = new ArrayList<>();
33 | for (Iterator iterator = services.iterator(); iterator.hasNext(); ) {
34 | FachdienstDomainDescr fachdienstDomainDescr = iterator.next();
35 | if (fachdienstDomainDescr.getEnv().equals(env) && fachdienstDomainDescr.getId().equals(id)) {
36 | result.add(fachdienstDomainDescr);
37 | }
38 | }
39 | return result;
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/fachdienst/FachdienstDomainDescr.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.fachdienst;
18 |
19 | import lombok.Data;
20 | import net.sberg.openkim.konfiguration.EnumTIEnvironment;
21 |
22 | @Data
23 | public class FachdienstDomainDescr {
24 | private EnumFachdienstDomainDescrId id;
25 | private EnumTIEnvironment env;
26 | private String domain;
27 | private String port;
28 | private String contextpath;
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/fachdienst/README.md:
--------------------------------------------------------------------------------
1 | Verwalten von Fachdiensten
2 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/gateway/GatewayKeystoreData.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.gateway;
18 |
19 | import lombok.Data;
20 |
21 | @Data
22 | public class GatewayKeystoreData {
23 | private String privateKey;
24 | private String certChain;
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/gateway/pop3/EnumPop3GatewayState.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.gateway.pop3;
18 |
19 | public enum EnumPop3GatewayState {
20 | UNKNOWN, CONNECT, PROXY, PROCESS
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/gateway/pop3/Pop3GatewayConfiguration.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.gateway.pop3;
18 |
19 | import net.sberg.openkim.konfiguration.Konfiguration;
20 | import net.sberg.openkim.log.LogService;
21 | import org.apache.james.protocols.pop3.POP3Configuration;
22 |
23 | public class Pop3GatewayConfiguration extends POP3Configuration {
24 |
25 | private final Konfiguration konfiguration;
26 | private final LogService logService;
27 |
28 | public Pop3GatewayConfiguration(Konfiguration konfiguration, LogService logService) {
29 | this.konfiguration = konfiguration;
30 | this.logService = logService;
31 | }
32 |
33 | @Override
34 | public String getGreeting() {
35 | return "KOM-LE Clientmodul POP3";
36 | }
37 |
38 | public LogService getLogService() {
39 | return logService;
40 | }
41 |
42 | public Konfiguration getKonfiguration() {
43 | return konfiguration;
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/gateway/pop3/Pop3GatewayProtocol.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.gateway.pop3;
18 |
19 | import org.apache.james.protocols.api.ProtocolConfiguration;
20 | import org.apache.james.protocols.api.ProtocolSession;
21 | import org.apache.james.protocols.api.ProtocolTransport;
22 | import org.apache.james.protocols.api.handler.ProtocolHandlerChain;
23 | import org.apache.james.protocols.pop3.POP3Protocol;
24 |
25 | public class Pop3GatewayProtocol extends POP3Protocol {
26 |
27 |
28 | public Pop3GatewayProtocol(ProtocolHandlerChain chain, ProtocolConfiguration config) {
29 | super(chain, config);
30 | }
31 |
32 | @Override
33 | public ProtocolSession newSession(ProtocolTransport transport) {
34 | return new Pop3GatewaySession(transport, (Pop3GatewayConfiguration) this.getConfiguration());
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/gateway/pop3/Pop3GatewayProtocolHandlerChain.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.gateway.pop3;
18 |
19 | import net.sberg.openkim.gateway.pop3.cmdhandler.*;
20 | import net.sberg.openkim.pipeline.PipelineService;
21 | import org.apache.james.protocols.api.handler.*;
22 | import org.apache.james.protocols.pop3.POP3Session;
23 |
24 | import java.util.ArrayList;
25 | import java.util.List;
26 |
27 | public class Pop3GatewayProtocolHandlerChain extends ProtocolHandlerChainImpl {
28 |
29 | public Pop3GatewayProtocolHandlerChain(PipelineService pipelineService) throws WiringException {
30 | addAll(initDefaultHandlers(pipelineService));
31 | wireExtensibleHandlers();
32 | }
33 |
34 | protected List initDefaultHandlers(PipelineService pipelineService) {
35 | List handlers = new ArrayList<>();
36 |
37 | handlers.add(new Pop3GatewayPassCmdHandler(pipelineService));
38 | handlers.add(new Pop3GatewayCapaCmdHandler());
39 | handlers.add(new Pop3GatewayAuthCmdHandler(pipelineService));
40 | handlers.add(new Pop3GatewayUserCmdHandler());
41 | handlers.add(new Pop3GatewayListCmdHandler());
42 | handlers.add(new Pop3GatewayUidlCmdHandler());
43 | handlers.add(new Pop3GatewayRsetCmdHandler());
44 | handlers.add(new Pop3GatewayDeleCmdHandler());
45 | handlers.add(new Pop3GatewayNoopCmdHandler());
46 | handlers.add(new Pop3GatewayRetrCmdHandler(pipelineService));
47 | handlers.add(new Pop3GatewayTopCmdHandler());
48 | handlers.add(new Pop3GatewayStatCmdHandler());
49 | handlers.add(new Pop3GatewayQuitCmdHandler());
50 | handlers.add(new Pop3GatewayStlsCmdHandler());
51 | handlers.add(new Pop3GatewayWelcomeMessageHandler());
52 | handlers.add(new Pop3GatewayUnknownCmdHandler());
53 | handlers.add(new CommandDispatcher());
54 | handlers.add(new CommandHandlerResultLogger());
55 |
56 | return handlers;
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/gateway/pop3/README.md:
--------------------------------------------------------------------------------
1 | Das POP3-Gateway laut Spezi https://fachportal.gematik.de/fachportal-import/files/gemSpec_CM_KOMLE_V1.13.0.pdf
2 | Kapitel 3.4
3 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/gateway/pop3/cmdhandler/Pop3GatewayNoopCmdHandler.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.gateway.pop3.cmdhandler;
18 |
19 | import com.google.common.collect.ImmutableSet;
20 | import net.sberg.openkim.common.metrics.DefaultMetricFactory;
21 | import net.sberg.openkim.gateway.pop3.Pop3GatewaySession;
22 | import org.apache.james.protocols.api.Request;
23 | import org.apache.james.protocols.api.Response;
24 | import org.apache.james.protocols.pop3.POP3Response;
25 | import org.apache.james.protocols.pop3.POP3Session;
26 | import org.apache.james.protocols.pop3.core.AbstractPOP3CommandHandler;
27 |
28 | import java.util.Collection;
29 |
30 | public class Pop3GatewayNoopCmdHandler extends AbstractPOP3CommandHandler {
31 | private static final Collection COMMANDS = ImmutableSet.of("NOOP");
32 |
33 | @Override
34 | public Response onCommand(POP3Session session, Request request) {
35 | DefaultMetricFactory gatewayMetricFactory = new DefaultMetricFactory(((Pop3GatewaySession) session).getLogger());
36 | return gatewayMetricFactory.decorateSupplierWithTimerMetric("pop3-noop", () -> noop(session));
37 | }
38 |
39 | private Response noop(POP3Session session) {
40 | if (session.getHandlerState() == POP3Session.TRANSACTION) {
41 | return POP3Response.OK;
42 | } else {
43 | return POP3Response.ERR;
44 | }
45 | }
46 |
47 | @Override
48 | public Collection getImplCommands() {
49 | return COMMANDS;
50 | }
51 |
52 | }
53 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/gateway/pop3/cmdhandler/Pop3GatewayUnknownCmdHandler.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.gateway.pop3.cmdhandler;
18 |
19 | import net.sberg.openkim.gateway.pop3.Pop3GatewaySession;
20 | import org.apache.james.protocols.api.Request;
21 | import org.apache.james.protocols.api.Response;
22 | import org.apache.james.protocols.api.handler.UnknownCommandHandler;
23 | import org.apache.james.protocols.pop3.POP3Response;
24 | import org.apache.james.protocols.pop3.POP3Session;
25 |
26 | public class Pop3GatewayUnknownCmdHandler extends UnknownCommandHandler {
27 |
28 | @Override
29 | public Response onCommand(POP3Session session, Request request) {
30 | ((Pop3GatewaySession) session).log("unknown begins");
31 | ((Pop3GatewaySession) session).log(request.getCommand());
32 | ((Pop3GatewaySession) session).log("unknown ends");
33 | return POP3Response.ERR;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/gateway/pop3/cmdhandler/Pop3GatewayWelcomeMessageHandler.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.gateway.pop3.cmdhandler;
18 |
19 | import org.apache.james.protocols.api.Response;
20 | import org.apache.james.protocols.pop3.POP3Response;
21 | import org.apache.james.protocols.pop3.POP3Session;
22 | import org.apache.james.protocols.pop3.core.WelcomeMessageHandler;
23 |
24 | public class Pop3GatewayWelcomeMessageHandler extends WelcomeMessageHandler {
25 | @Override
26 | public Response onConnect(POP3Session session) {
27 | return new POP3Response(POP3Response.OK_RESPONSE, session.getConfiguration().getGreeting());
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/gateway/pop3/signreport/VerifyOCSPResult.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.gateway.pop3.signreport;
18 |
19 | import lombok.Data;
20 |
21 | import java.security.cert.X509Certificate;
22 | import java.util.ArrayList;
23 | import java.util.List;
24 |
25 | @Data
26 | public class VerifyOCSPResult {
27 | private boolean revoked;
28 | private boolean unknown;
29 | private String revokeTime;
30 | private String produceTime;
31 | private List certs = new ArrayList<>();
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/gateway/smtp/EnumSmtpGatewayState.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.gateway.smtp;
18 |
19 | public enum EnumSmtpGatewayState {
20 | UNKNOWN, CONNECT, PROXY, PROCESS
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/gateway/smtp/README.md:
--------------------------------------------------------------------------------
1 | Das SMTP-Gateway laut Spezi https://fachportal.gematik.de/fachportal-import/files/gemSpec_CM_KOMLE_V1.13.0.pdf
2 | Kapitel 3.3
3 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/gateway/smtp/SmtpGatewayConfiguration.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.gateway.smtp;
18 |
19 | import net.sberg.openkim.konfiguration.Konfiguration;
20 | import net.sberg.openkim.log.LogService;
21 | import org.apache.james.protocols.smtp.SMTPConfigurationImpl;
22 |
23 | public class SmtpGatewayConfiguration extends SMTPConfigurationImpl {
24 |
25 | private final Konfiguration konfiguration;
26 | private final LogService logService;
27 |
28 | public SmtpGatewayConfiguration(Konfiguration konfiguration, LogService logService) {
29 | this.konfiguration = konfiguration;
30 | this.logService = logService;
31 | }
32 |
33 | @Override
34 | public String getGreeting() {
35 | return "KOM-LE Clientmodul ESMTP";
36 | }
37 |
38 | public LogService getLogService() {
39 | return logService;
40 | }
41 |
42 | public Konfiguration getKonfiguration() {
43 | return konfiguration;
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/gateway/smtp/SmtpGatewayProtocol.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.gateway.smtp;
18 |
19 | import org.apache.james.protocols.api.ProtocolSession;
20 | import org.apache.james.protocols.api.ProtocolTransport;
21 | import org.apache.james.protocols.api.handler.ProtocolHandlerChain;
22 | import org.apache.james.protocols.smtp.SMTPConfiguration;
23 | import org.apache.james.protocols.smtp.SMTPProtocol;
24 |
25 | public class SmtpGatewayProtocol extends SMTPProtocol {
26 |
27 | private int smtpClientIdleTimeoutInSeconds;
28 |
29 | public SmtpGatewayProtocol(ProtocolHandlerChain chain, SMTPConfiguration config) {
30 | super(chain, config);
31 | }
32 |
33 | @Override
34 | public ProtocolSession newSession(ProtocolTransport transport) {
35 | return new SmtpGatewaySession(transport, (SMTPConfiguration) this.getConfiguration());
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/gateway/smtp/cmdhandler/SmtpGatewayNoopCmdHandler.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.gateway.smtp.cmdhandler;
18 |
19 | import com.google.common.collect.ImmutableSet;
20 | import net.sberg.openkim.common.metrics.DefaultMetricFactory;
21 | import net.sberg.openkim.gateway.smtp.SmtpGatewaySession;
22 | import org.apache.james.protocols.api.Request;
23 | import org.apache.james.protocols.api.Response;
24 | import org.apache.james.protocols.api.handler.CommandHandler;
25 | import org.apache.james.protocols.smtp.SMTPResponse;
26 | import org.apache.james.protocols.smtp.SMTPRetCode;
27 | import org.apache.james.protocols.smtp.SMTPSession;
28 | import org.apache.james.protocols.smtp.dsn.DSNStatus;
29 |
30 | import java.util.Collection;
31 |
32 | public class SmtpGatewayNoopCmdHandler implements CommandHandler {
33 |
34 | /**
35 | * The name of the command handled by the command handler
36 | */
37 | private static final Collection COMMANDS = ImmutableSet.of("NOOP");
38 |
39 | private static final Response NOOP = new SMTPResponse(SMTPRetCode.MAIL_OK, DSNStatus.getStatus(DSNStatus.SUCCESS, DSNStatus.UNDEFINED_STATUS) + " OK").immutable();
40 |
41 | /**
42 | * Handler method called upon receipt of a NOOP command.
43 | * Just sends back an OK and logs the command.
44 | */
45 | @Override
46 | public Response onCommand(SMTPSession session, Request request) {
47 | DefaultMetricFactory gatewayMetricFactory = new DefaultMetricFactory(((SmtpGatewaySession) session).getLogger());
48 | return gatewayMetricFactory.decorateSupplierWithTimerMetric("smto-auth", () -> NOOP);
49 | }
50 |
51 | @Override
52 | public Collection getImplCommands() {
53 | return COMMANDS;
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/gateway/smtp/cmdhandler/SmtpGatewayWelcomeMessageHandler.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.gateway.smtp.cmdhandler;
18 |
19 | import net.sberg.openkim.gateway.smtp.EnumSmtpGatewayState;
20 | import net.sberg.openkim.gateway.smtp.SmtpGatewaySession;
21 | import org.apache.james.protocols.api.Response;
22 | import org.apache.james.protocols.smtp.SMTPSession;
23 | import org.apache.james.protocols.smtp.core.WelcomeMessageHandler;
24 |
25 | public class SmtpGatewayWelcomeMessageHandler extends WelcomeMessageHandler {
26 |
27 | @Override
28 | public Response onConnect(SMTPSession session) {
29 | Response response = super.onConnect(session);
30 | ((SmtpGatewaySession) session).setGatewayState(EnumSmtpGatewayState.CONNECT);
31 | return response;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/gateway/smtp/hook/SmtpGatewayQuitHook.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.gateway.smtp.hook;
18 |
19 | import net.sberg.openkim.gateway.smtp.SmtpGatewaySession;
20 | import org.apache.james.protocols.smtp.SMTPSession;
21 | import org.apache.james.protocols.smtp.hook.HookResult;
22 | import org.apache.james.protocols.smtp.hook.QuitHook;
23 | import org.slf4j.Logger;
24 | import org.slf4j.LoggerFactory;
25 |
26 | public class SmtpGatewayQuitHook implements QuitHook {
27 |
28 | private static final Logger log = LoggerFactory.getLogger(SmtpGatewayQuitHook.class);
29 |
30 | @Override
31 | public HookResult doQuit(SMTPSession smtpSession) {
32 | try {
33 | ((SmtpGatewaySession) smtpSession).log("quit hook begins");
34 | if (((SmtpGatewaySession) smtpSession).getSmtpClient() == null || ((SmtpGatewaySession) smtpSession).getSmtpClient().logout()) {
35 | ((SmtpGatewaySession) smtpSession).setSmtpClient(null);
36 | ((SmtpGatewaySession) smtpSession).log("quit hook ends");
37 | return HookResult.OK;
38 | }
39 | ((SmtpGatewaySession) smtpSession).log("quit hook ends - error");
40 | return HookResult.DENY;
41 | } catch (Exception e) {
42 | log.error("error on doQuit smtp gateway quit hook - " + smtpSession.getSessionID(), e);
43 | ((SmtpGatewaySession) smtpSession).log("quit hook ends - error");
44 | return HookResult.DENY;
45 | }
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/konfiguration/EnumGatewayTIMode.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.konfiguration;
18 |
19 | public enum EnumGatewayTIMode {
20 | FULLSTACK("Konnektor + KIM-Fachdienste werden benutzt"),
21 | KONNEKTOR("Konnektor wird benutzt. Ansonsten kann wird mit Internet/Intranet-Mailservern gearbeitet"),
22 | NO_TI("Konnektor wird NICHT benutzt und es wird mit Internet/Intranet-Mailservern gearbeitet");
23 |
24 | private final String hrText;
25 |
26 | EnumGatewayTIMode(String hrText) {
27 | this.hrText = hrText;
28 | }
29 |
30 | public String getHrText() {
31 | return hrText;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/konfiguration/EnumTIEnvironment.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.konfiguration;
18 |
19 | public enum EnumTIEnvironment {
20 | TU("Testumgebung"),
21 | RU("Referenzumgebung"),
22 | PU("Produktivumgebung");
23 |
24 | private final String hrText;
25 |
26 | EnumTIEnvironment(String hrText) {
27 | this.hrText = hrText;
28 | }
29 |
30 | public String getHrText() {
31 | return hrText;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/konfiguration/README.md:
--------------------------------------------------------------------------------
1 | Konfiguration des KIM-Client-Moduls
2 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/konfiguration/ServerState.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.konfiguration;
18 |
19 | import lombok.AllArgsConstructor;
20 | import lombok.Data;
21 |
22 | @Data
23 | @AllArgsConstructor
24 | public class ServerState {
25 | private String id;
26 | private String name;
27 | private String host;
28 | private String port;
29 | private boolean alive;
30 | private boolean active;
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/konnektor/CMSAttribute.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.konnektor;
18 |
19 | import jakarta.xml.bind.annotation.XmlAccessType;
20 | import jakarta.xml.bind.annotation.XmlAccessorType;
21 | import jakarta.xml.bind.annotation.XmlRootElement;
22 | import jakarta.xml.bind.annotation.XmlValue;
23 |
24 | @XmlRootElement(name = "CMSAttribute")
25 | @XmlAccessorType(XmlAccessType.FIELD)
26 | public class CMSAttribute {
27 | @XmlValue
28 | private String content;
29 |
30 | public void setContent(String content) {
31 | this.content = content;
32 | }
33 |
34 | public String getContent() {
35 | return content;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/konnektor/EnumKonnektorAuthMethod.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.konnektor;
18 |
19 | public enum EnumKonnektorAuthMethod {
20 | CERT, BASICAUTH, NONE, UNKNOWN
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/konnektor/EnumKonnektorServiceBeanType.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.konnektor;
18 |
19 | public enum EnumKonnektorServiceBeanType {
20 | EncryptionService("de.gematik.ws.conn.encryptionservice.v6", "http://ws.gematik.de/conn/EncryptionService/"),
21 | SignatureService("de.gematik.ws.conn.signatureservice.v7", "http://ws.gematik.de/conn/SignatureService/"),
22 | CardService("de.gematik.ws.conn.cardservice.v8", "http://ws.gematik.de/conn/CardService/"),
23 | CardTerminalService("de.gematik.ws.conn.cardterminalservice.v1", "http://ws.gematik.de/conn/CardTerminalService/"),
24 | AuthSignatureService("de.gematik.ws.conn.authsignatureservice", "http://ws.gematik.de/conn/SignatureService/"),
25 | CertificateService("de.gematik.ws.conn.certificateservice.v6", "http://ws.gematik.de/conn/CertificateService/"),
26 | EventService("de.gematik.ws.conn.eventservice.v7", "http://ws.gematik.de/conn/EventService/");
27 |
28 | private final String packageName;
29 | private final String soapActionPrefix;
30 |
31 | EnumKonnektorServiceBeanType(String packageName, String soapActionPrefix) {
32 | this.packageName = packageName;
33 | this.soapActionPrefix = soapActionPrefix;
34 | }
35 |
36 | public String getPackageName() {
37 | return packageName;
38 | }
39 |
40 | public String getSoapActionPrefix() {
41 | return soapActionPrefix;
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/konnektor/KonnektorCard.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.konnektor;
18 |
19 | import lombok.Data;
20 |
21 | @Data
22 | public class KonnektorCard {
23 | private String uuid;
24 | private String pinStatus;
25 | private String cardTerminal;
26 | private String cardSlot;
27 | private String cardHandle;
28 | private String cardType;
29 | private String pinTyp;
30 | private String iccsn;
31 | private String telematikId;
32 | private String expiredAt;
33 | private String konnId;
34 | private String wsId;
35 | private String verifyPinOpId;
36 | }
37 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/konnektor/KonnektorServiceBean.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.konnektor;
18 |
19 | import lombok.Data;
20 |
21 | @Data
22 | public class KonnektorServiceBean {
23 | private String id;
24 | private String version;
25 | private String endpoint;
26 | private String endpointTls;
27 | private EnumKonnektorServiceBeanType enumKonnektorServiceBeanType;
28 | private boolean alive;
29 | private boolean testable = true;
30 |
31 | public boolean isTestable() {
32 | if (enumKonnektorServiceBeanType.equals(EnumKonnektorServiceBeanType.SignatureService)) {
33 | return false;
34 | }
35 | return testable;
36 | }
37 |
38 | public String createClassPackageName() {
39 | return enumKonnektorServiceBeanType.getPackageName();
40 | }
41 |
42 | public String createSoapAction(String operation) {
43 | //bsp.: "http://ws.gematik.de/conn/EventService/v7.2#Subscribe"
44 | String[] arr = version.split("\\.");
45 | return enumKonnektorServiceBeanType.getSoapActionPrefix()
46 | + "v"
47 | + arr[0]
48 | + "."
49 | + arr[1]
50 | + "#"
51 | + operation;
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/konnektor/KonnektorWebserviceUtils.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.konnektor;
18 |
19 | import net.sberg.openkim.common.CommonBuilderFactory;
20 | import net.sberg.openkim.log.DefaultLogger;
21 |
22 | import java.util.Arrays;
23 | import java.util.List;
24 |
25 | public class KonnektorWebserviceUtils {
26 |
27 | public static final String STATUS_OK = "OK";
28 | public static final String CARD_PIN_TYP_SMC = "PIN.SMC";
29 | public static final String CARD_PIN_TYP_CH = "PIN.CH";
30 | public static final String CERT_REF_AUT = "C.AUT";
31 | public static final String CERT_REF_ENC = "C.ENC";
32 | public static final String CERT_REF_SIG = "C.SIG";
33 | public static final String CERT_REF_QES = "C.QES";
34 |
35 | public static final String CARD_TYPE_SMB = "SM-B";
36 | public static final String CARD_TYPE_SMCB = "SMC-B";
37 | public static final String CARD_TYPE_HBA = "HBA";
38 | public static final String CARD_TYPE_HBAx = "HBAx";
39 | public static final List interestingCardTypes = Arrays.asList(CARD_TYPE_SMCB, CARD_TYPE_SMB);
40 |
41 | public static final String ECC_ENC_AVAILABLE_SIGNATURESERVICE_VERSION = "7.4.1";
42 | public static final String ECC_ENC_AVAILABLE_ENCRYPTIONSERVICE_VERSION = "6.1.1";
43 |
44 | public static final String getPinType(String cardType) {
45 | if (cardType.toLowerCase().startsWith("sm")) {
46 | return CARD_PIN_TYP_SMC;
47 | }
48 | return CARD_PIN_TYP_CH;
49 | }
50 |
51 | public static final WebserviceConnector createConnector(Konnektor konnektor, String packageName, KonnektorServiceBean konnektorServiceBean, String soapAction, DefaultLogger logger) throws Exception {
52 | CommonBuilderFactory konnektorConnectionBuilder = new CommonBuilderFactory();
53 | return konnektorConnectionBuilder.buildWebserviceConnector(logger, packageName, konnektorServiceBean.getEndpointTls(), konnektor, soapAction);
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/konnektor/README.md:
--------------------------------------------------------------------------------
1 | Verwalten von Konnektoren
2 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/konnektor/WebserviceConnector.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.konnektor;
18 |
19 | import org.springframework.ws.client.core.support.WebServiceGatewaySupport;
20 | import org.springframework.ws.transport.http.HttpComponentsMessageSender;
21 |
22 | public class WebserviceConnector extends WebServiceGatewaySupport {
23 | public Object getSoapResponse(Object requestPayload) throws Exception {
24 | Object response = getWebServiceTemplate().marshalSendAndReceive(requestPayload);
25 | for (int i = 0; i < getMessageSenders().length; i++) {
26 | ((HttpComponentsMessageSender) getMessageSenders()[i]).destroy();
27 | }
28 | return response;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/log/EnumLogTyp.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.log;
18 |
19 | public enum EnumLogTyp {
20 | POP3, SMTP
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/log/Log.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.log;
18 |
19 | import lombok.Data;
20 |
21 | import java.time.LocalDateTime;
22 |
23 | @Data
24 | public class Log {
25 | private String id;
26 | private EnumLogTyp logTyp;
27 | private LocalDateTime geaendert;
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/log/error/IErrorContext.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.log.error;
18 |
19 | public interface IErrorContext {
20 | }
21 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/log/error/MailDecryptErrorContext.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.log.error;
18 |
19 | import lombok.Data;
20 |
21 | import java.util.ArrayList;
22 | import java.util.List;
23 |
24 | @Data
25 | public class MailDecryptErrorContext implements IErrorContext {
26 | private List errorCodes = new ArrayList<>();
27 |
28 | public List getErrorCodes() {
29 | return errorCodes;
30 | }
31 |
32 | public boolean isEmpty() {
33 | return errorCodes.isEmpty();
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/log/error/MailEncryptFormatErrorContext.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.log.error;
18 |
19 | import lombok.Data;
20 |
21 | import java.util.ArrayList;
22 | import java.util.List;
23 |
24 | @Data
25 | public class MailEncryptFormatErrorContext implements IErrorContext {
26 | private List errorCodes = new ArrayList<>();
27 |
28 | public List getErrorCodes() {
29 | return errorCodes;
30 | }
31 |
32 | public boolean isEmpty() {
33 | return errorCodes.isEmpty();
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/log/error/MailSignEncryptErrorContext.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.log.error;
18 |
19 | import lombok.Data;
20 |
21 | import java.util.ArrayList;
22 | import java.util.List;
23 |
24 | @Data
25 | public class MailSignEncryptErrorContext implements IErrorContext {
26 | private List errorCodes = new ArrayList<>();
27 |
28 | public List getErrorCodes() {
29 | return errorCodes;
30 | }
31 |
32 | public boolean isEmpty() {
33 | return errorCodes.isEmpty();
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/log/error/MailSignVerifyErrorContext.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.log.error;
18 |
19 | import lombok.Data;
20 |
21 | import java.util.ArrayList;
22 | import java.util.List;
23 |
24 | @Data
25 | public class MailSignVerifyErrorContext implements IErrorContext {
26 | private List errorCodes = new ArrayList<>();
27 |
28 | public List getErrorCodes() {
29 | return errorCodes;
30 | }
31 |
32 | public boolean isEmpty() {
33 | return errorCodes.isEmpty();
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/log/error/MailaddressKimVersionErrorContext.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.log.error;
18 |
19 | import lombok.Data;
20 | import net.sberg.openkim.common.x509.X509CertificateResult;
21 |
22 | import java.util.ArrayList;
23 | import java.util.HashMap;
24 | import java.util.List;
25 | import java.util.Map;
26 |
27 | @Data
28 | public class MailaddressKimVersionErrorContext implements IErrorContext {
29 | private Map> errorCerts = new HashMap<>();
30 | private Map> addressErrors = new HashMap<>();
31 |
32 | private List rcptAddresses = new ArrayList<>();
33 | private String senderAddress;
34 |
35 | public boolean isEmpty() {
36 | return errorCerts.isEmpty();
37 | }
38 |
39 | public void add(X509CertificateResult x509CertificateResult, EnumErrorCode errorCode, boolean sender) {
40 | if (!errorCerts.containsKey(errorCode)) {
41 | errorCerts.put(errorCode, new ArrayList<>());
42 | }
43 | if (!errorCerts.get(errorCode).contains(x509CertificateResult)) {
44 | errorCerts.get(errorCode).add(x509CertificateResult);
45 | }
46 | fill(x509CertificateResult.getMailAddress(), errorCode, sender);
47 | }
48 |
49 | private void fill(String address, EnumErrorCode errorCode, boolean sender) {
50 | if (!addressErrors.containsKey(address)) {
51 | addressErrors.put(address, new ArrayList<>());
52 | }
53 | if (!addressErrors.get(address).contains(errorCode)) {
54 | addressErrors.get(address).add(errorCode);
55 | }
56 |
57 | if (sender) {
58 | if (senderAddress == null) {
59 | senderAddress = address;
60 | }
61 | } else {
62 | if (!rcptAddresses.contains(address)) {
63 | rcptAddresses.add(address);
64 | }
65 | }
66 | }
67 |
68 | public boolean isError(String address) {
69 | return addressErrors.containsKey(address) && !addressErrors.get(address).isEmpty();
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/log/error/MailaddressRcptToErrorContext.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.log.error;
18 |
19 | import lombok.Data;
20 |
21 | import java.util.ArrayList;
22 | import java.util.HashMap;
23 | import java.util.List;
24 | import java.util.Map;
25 |
26 | @Data
27 | public class MailaddressRcptToErrorContext implements IErrorContext {
28 | private Map addressErrors = new HashMap<>();
29 | private List rcptAddresses = new ArrayList<>();
30 |
31 | public boolean isEmpty() {
32 | return addressErrors.isEmpty() && rcptAddresses.isEmpty();
33 | }
34 |
35 | public void add(String rcptAddress, EnumErrorCode errorCode) {
36 | if (!addressErrors.containsKey(rcptAddress)) {
37 | addressErrors.put(rcptAddress, errorCode);
38 | }
39 | if (!rcptAddresses.contains(rcptAddress)) {
40 | rcptAddresses.add(rcptAddress);
41 | }
42 | }
43 | public boolean isError(String address) {
44 | return addressErrors.containsKey(address);
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/pipeline/PipelineOperation.java:
--------------------------------------------------------------------------------
1 | package net.sberg.openkim.pipeline;
2 |
3 | import org.springframework.beans.factory.annotation.Qualifier;
4 |
5 | import java.lang.annotation.ElementType;
6 | import java.lang.annotation.Retention;
7 | import java.lang.annotation.RetentionPolicy;
8 | import java.lang.annotation.Target;
9 |
10 | @Retention(RetentionPolicy.RUNTIME)
11 | @Target({ElementType.FIELD, ElementType.TYPE})
12 | @Qualifier
13 | public @interface PipelineOperation {
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/pipeline/PipelineService.java:
--------------------------------------------------------------------------------
1 | package net.sberg.openkim.pipeline;
2 |
3 | import net.sberg.openkim.konnektor.KonnektorVzdController;
4 | import net.sberg.openkim.pipeline.operation.IPipelineOperation;
5 | import net.sberg.openkim.pipeline.operation.PipelineOperationLabel;
6 | import org.slf4j.Logger;
7 | import org.slf4j.LoggerFactory;
8 | import org.springframework.beans.factory.annotation.Autowired;
9 | import org.springframework.stereotype.Service;
10 |
11 | import java.util.List;
12 | import java.util.stream.Collectors;
13 |
14 | @Service
15 | public class PipelineService {
16 |
17 | private static final Logger log = LoggerFactory.getLogger(KonnektorVzdController.class);
18 |
19 | @Autowired
20 | @PipelineOperation
21 | List operations;
22 |
23 | public IPipelineOperation getOperation(String key) throws Exception {
24 | List result = operations.stream().filter(iPipelineOperation -> iPipelineOperation.getOperationKey().equals(key)).collect(Collectors.toList());
25 | if (result.size() == 1) {
26 | return result.get(0);
27 | }
28 | if (result.size() > 1) {
29 | throw new IllegalStateException("more than one operation available: "+key);
30 | }
31 | throw new IllegalStateException("no operation available: "+key);
32 | }
33 |
34 | public Class getOperationClass(String key) throws Exception {
35 | List result = operations.stream().filter(iPipelineOperation -> iPipelineOperation.getOperationKey().equals(key)).collect(Collectors.toList());
36 | if (result.size() == 1) {
37 | return result.get(0).getClass();
38 | }
39 | if (result.size() > 1) {
40 | throw new IllegalStateException("more than one operation available: "+key);
41 | }
42 | throw new IllegalStateException("no operation available: "+key);
43 | }
44 |
45 | public List getTestableOperations() throws Exception {
46 | return operations.stream().filter(s -> s.isTestable()).map(s -> s.createLabel()).collect(Collectors.toList());
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/pipeline/operation/DefaultPipelineOperationContext.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.pipeline.operation;
18 |
19 | import net.sberg.openkim.log.DefaultLogger;
20 |
21 | import java.util.HashMap;
22 | import java.util.Map;
23 |
24 | public class DefaultPipelineOperationContext implements IPipelineOperationContext {
25 |
26 | public static final String ENV_KONNEKTOR_ID = "konnId";
27 | public static final String ENV_WEBSERVICE_ID = "wsId";
28 | public static final String ENV_OP_ID = "opId";
29 |
30 | private DefaultLogger logger;
31 | private Map environment = new HashMap<>();
32 |
33 | public DefaultLogger getLogger() {
34 | return logger;
35 | }
36 |
37 | private DefaultPipelineOperationContext() {}
38 | public DefaultPipelineOperationContext(DefaultLogger logger) { this.logger = logger; }
39 |
40 | public Object getEnvironmentValue(String prefix, String key) {
41 | return environment.get(prefix+"."+key);
42 | }
43 | public boolean hasEnvironmentValue(String prefix, String key) { return environment.containsKey(prefix+"."+key); }
44 | public void setEnvironmentValue(String prefix, String key, Object val) {
45 | environment.put(prefix+"."+key, val);
46 | }
47 | public void setEnvironmentValues(Map values) {
48 | environment.putAll(values);
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/pipeline/operation/IPipelineOperation.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.pipeline.operation;
18 |
19 | import java.io.PrintWriter;
20 | import java.io.StringWriter;
21 | import java.util.function.BiConsumer;
22 | import java.util.function.Consumer;
23 |
24 | public interface IPipelineOperation {
25 |
26 | public static final String BUILTIN_VENDOR = "OpenKIM";
27 |
28 | public static final String ENV_EXCEPTION = "exception";
29 |
30 | public String getName();
31 | public Consumer getDefaultOkConsumer();
32 | public void execute(DefaultPipelineOperationContext defaultPipelineOperationContext, Consumer okConsumer, BiConsumer failConsumer);
33 |
34 | public default String getOperationKey() {
35 | return getVendor()+"."+getName();
36 | }
37 | public default String getVendor() {
38 | return BUILTIN_VENDOR;
39 | }
40 | public default BiConsumer getDefaultFailConsumer() {
41 | return (context, e) -> {
42 | context.setEnvironmentValue(getName(), ENV_EXCEPTION, e);
43 | StringWriter sw = new StringWriter();
44 | PrintWriter pw = new PrintWriter(sw);
45 | e.printStackTrace(pw);
46 | context.getLogger().logLine(sw.toString(), true);
47 | };
48 | }
49 | public default boolean hasError(DefaultPipelineOperationContext defaultPipelineOperationContext, String... prefixes) {
50 | for (int i = 0; i < prefixes.length; i++) {
51 | if (defaultPipelineOperationContext.hasEnvironmentValue(prefixes[i], ENV_EXCEPTION)) {
52 | return true;
53 | }
54 | }
55 | return false;
56 | }
57 | public default boolean isTestable() {
58 | return false;
59 | }
60 | public default String getHrText() {
61 | return getOperationKey();
62 | }
63 | public default PipelineOperationLabel createLabel() {
64 | PipelineOperationLabel label = new PipelineOperationLabel();
65 | label.setLabel(getHrText());
66 | label.setId(getOperationKey());
67 | return label;
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/pipeline/operation/IPipelineOperationContext.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.pipeline.operation;
18 |
19 | public interface IPipelineOperationContext {
20 | }
21 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/pipeline/operation/PipelineOperationLabel.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.pipeline.operation;
18 |
19 | import lombok.Data;
20 |
21 | @Data
22 | public class PipelineOperationLabel {
23 | private String id;
24 | private String label;
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/pipeline/operation/konnektor/dns/DnsResult.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.pipeline.operation.konnektor.dns;
18 |
19 | import lombok.Data;
20 |
21 | @Data
22 | public class DnsResult {
23 | private String address;
24 | private String name;
25 | private int type;
26 | private int port;
27 | private int dclass;
28 | private long ttl;
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/pipeline/operation/konnektor/dns/DnsResultContainer.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.pipeline.operation.konnektor.dns;
18 |
19 | import lombok.Data;
20 |
21 | import java.util.ArrayList;
22 | import java.util.List;
23 |
24 | @Data
25 | public class DnsResultContainer {
26 | private boolean error;
27 | private List result = new ArrayList<>();
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/pipeline/operation/konnektor/ntp/NtpResult.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.pipeline.operation.konnektor.ntp;
18 |
19 | import lombok.Data;
20 |
21 | import java.util.Date;
22 |
23 | @Data
24 | public class NtpResult {
25 | private Date systemTime;
26 | private Date konnektorTime;
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/pipeline/operation/konnektor/vzd/EnumKomLeVersion.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.pipeline.operation.konnektor.vzd;
18 |
19 | public enum EnumKomLeVersion {
20 | V1_0("1.0", "1.0"),
21 | V1_5("1.5", "1.5"),
22 | V1_5plus("1.5.1", "1.5+");
23 |
24 | private String innerVersion;
25 | private String officalVersion;
26 |
27 | private EnumKomLeVersion(String innerVersion, String officalVersion) {
28 | this.innerVersion = innerVersion;
29 | this.officalVersion = officalVersion;
30 | }
31 |
32 | public String getInnerVersion() {
33 | return innerVersion;
34 | }
35 |
36 | public String getOfficalVersion() {
37 | return officalVersion;
38 | }
39 |
40 | public static final EnumKomLeVersion get(String officialVersion) {
41 | switch (officialVersion) {
42 | case "1.0": return EnumKomLeVersion.V1_0;
43 | case "1.5": return EnumKomLeVersion.V1_5;
44 | case "1.5+": return EnumKomLeVersion.V1_5plus;
45 | default: throw new IllegalStateException("unknown official version: "+officialVersion);
46 | }
47 |
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/pipeline/operation/konnektor/vzd/EnumVzdErrorCode.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.pipeline.operation.konnektor.vzd;
18 |
19 | public enum EnumVzdErrorCode {
20 | OK,
21 | NOT_FOUND,
22 | OTHER
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/pipeline/operation/konnektor/vzd/VzdMailResult.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.pipeline.operation.konnektor.vzd;
18 |
19 | import lombok.Data;
20 |
21 | @Data
22 | public class VzdMailResult {
23 | private String mailAddress;
24 | private EnumKomLeVersion version;
25 |
26 | @Override
27 | public String toString() {
28 | return version.getOfficalVersion()+","+mailAddress;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/pipeline/operation/konnektor/vzd/VzdResult.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.pipeline.operation.konnektor.vzd;
18 |
19 | import lombok.Data;
20 |
21 | import java.security.cert.X509Certificate;
22 | import java.util.ArrayList;
23 | import java.util.HashMap;
24 | import java.util.List;
25 | import java.util.Map;
26 | import java.util.stream.Collectors;
27 |
28 | @Data
29 | public class VzdResult {
30 | private String uid;
31 | private String cn;
32 | private String sn;
33 | private String displayName;
34 | private String givenName;
35 | private Map mailResults = new HashMap<>();
36 | private String personalEntry;
37 | private String changeDateTime;
38 | private String countryCode;
39 | private String dataFromAuthority;
40 | private String domainID;
41 | private String entryType;
42 | private String l;
43 | private String organization;
44 | private String otherName;
45 | private String postalCode;
46 | private String professionOID;
47 | private String specialization;
48 | private String st;
49 | private String street;
50 | private String telematikID;
51 | private String title;
52 | private List certs = new ArrayList<>();
53 | private List certBytes = new ArrayList<>();
54 | private String certSummary;
55 | private EnumVzdErrorCode errorCode = EnumVzdErrorCode.OK;
56 |
57 | public String createMailStr() {
58 | if (mailResults.isEmpty()) {
59 | return "";
60 | }
61 | return mailResults.keySet().stream().map(s -> mailResults.get(s).toString()).collect(Collectors.joining(";"));
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/pipeline/operation/mail/kas/EnumKasServiceErrorCode.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.pipeline.operation.mail.kas;
18 |
19 | public enum EnumKasServiceErrorCode {
20 | technical("Technischer Fehler"),
21 | notAttachmentSizeExceded("Größe der Mail ohne Attachments zu groß"),
22 | attachmentIncorrectTypeAndDisposition("Mail enthält Attachments mit Content-Type: text/plain;charset=utf-8 sowie ein Content-Disposition: x-kas"),
23 | kasQuotaReached("Quota-Überschreitung auf dem Kas-Server für den Account"),
24 | readBinariesFromMail("Fehler beim Lesen der Binaries von der Mail"),
25 | encryptAttachment("Fehler beim Verschlüsseln des Anhangs"),
26 | sendAttachment("Fehler beim Senden des Anhangs"),
27 | sendAttachmentBadRequest("Fehler beim Senden des Anhangs - BAD_REQUEST"),
28 | sendAttachmentUnauthorized("Fehler beim Senden des Anhangs - UNAUTHORIZED"),
29 | sendAttachmentPayloadTooLarge("Fehler beim Senden des Anhangs - PAYLOAD_TOO_LARGE"),
30 | sendAttachmentInternalServerError("Fehler beim Senden des Anhangs - INTERNAL_SERVER_ERROR"),
31 | sendAttachmentInsufficientStorage("Fehler beim Senden des Anhangs - INSUFFICIENT_STORAGE"),
32 | hashPlainAttachment("Fehler beim Hashen des Plain-Anhangs"),
33 | creatingXkasMimebodypart("Fehler beim Erstellen des x-kas MimeBodyParts"),
34 | readAttachment("Fehler beim Herunterladen des Anhangs"),
35 | readAttachmentForbidden("Fehler beim Herunterladen des Anhangs - FORBIDDEN"),
36 | readAttachmentNotFound("Fehler beim Herunterladen des Anhangs - NOT_FOUND"),
37 | readAttachmentTooManyRequests("Fehler beim Herunterladen des Anhangs - TOO_MANY_REQUESTS"),
38 | readAttachmentInternalServerError("Fehler beim Herunterladen des Anhangs - INTERNAL_SERVER_ERROR"),
39 | creatingOriginalMimemessage("Fehler beim Erstellen der originalen Mail"),
40 | decryptAttachment("Fehler beim Entschlüsseln des Anhangs"),
41 | checkHashPlainAttachment("Fehler beim Checken und Vergleichen des Hashwertes des Plain-Anhangs"),
42 | unknown("unbekannt");
43 |
44 | private final String hrText;
45 |
46 | EnumKasServiceErrorCode(String hrText) {
47 | this.hrText = hrText;
48 | }
49 |
50 | public String getHrText() {
51 | return hrText;
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/pipeline/operation/mail/kas/KasMetaObj.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.pipeline.operation.mail.kas;
18 |
19 | import lombok.AccessLevel;
20 | import lombok.AllArgsConstructor;
21 | import lombok.Data;
22 | import lombok.NoArgsConstructor;
23 |
24 | @Data
25 | @NoArgsConstructor(force = true, access = AccessLevel.PUBLIC)
26 | @AllArgsConstructor
27 | public class KasMetaObj {
28 | private String link;
29 | private String k;
30 | private String hash;
31 | private double size;
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/pipeline/operation/mail/kas/KasMetaObjError.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.pipeline.operation.mail.kas;
18 |
19 | import lombok.AccessLevel;
20 | import lombok.AllArgsConstructor;
21 | import lombok.Data;
22 | import lombok.NoArgsConstructor;
23 |
24 | @Data
25 | @NoArgsConstructor(force = true, access = AccessLevel.PUBLIC)
26 | @AllArgsConstructor
27 | public class KasMetaObjError {
28 | private String name;
29 | private int size;
30 | private String type;
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/pipeline/operation/mail/kas/KasServiceException.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.pipeline.operation.mail.kas;
18 |
19 | public class KasServiceException extends Exception {
20 |
21 | private final EnumKasServiceErrorCode code;
22 |
23 | protected KasServiceException(EnumKasServiceErrorCode code, String message) {
24 | super(message);
25 | this.code = code;
26 | }
27 |
28 | protected KasServiceException(EnumKasServiceErrorCode code, String message, Throwable cause) {
29 | super(message, cause);
30 | this.code = code;
31 | }
32 |
33 | public EnumKasServiceErrorCode getCode() {
34 | return this.code;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/pipeline/operation/mail/kas/README.md:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/pipeline/operation/mail/part/EnumMailPartContentType.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.pipeline.operation.mail.part;
18 |
19 | public enum EnumMailPartContentType {
20 | MimeMessage, Multipart, Text, Binary, DispositionNotification, DeliveryStatus, Unknown
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/pipeline/operation/mail/part/EnumMailPartDispositionType.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.pipeline.operation.mail.part;
18 |
19 | public enum EnumMailPartDispositionType {
20 | Xkas("x-kas"), Unknown("unknown");
21 |
22 | private final String name;
23 |
24 | EnumMailPartDispositionType(String name) {
25 | this.name = name;
26 | }
27 |
28 | public String getName() {
29 | return name;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/user/UserChangePwd.java:
--------------------------------------------------------------------------------
1 | package net.sberg.openkim.user;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class UserChangePwd {
7 | private String username;
8 | private String oldPwd;
9 | private String newPwd;
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/net/sberg/openkim/user/UserController.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2023 sberg it-systeme GmbH
3 | *
4 | * Licensed under the EUPL, Version 1.1 or - as soon they will be approved
5 | * by the European Commission - subsequent versions of the EUPL (the "Licence");
6 | * You may not use this work except in compliance with the Licence.
7 | * You may obtain a copy of the Licence at:
8 | *
9 | * http://ec.europa.eu/idabc/eupl
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the Licence is distributed on an "AS IS" basis,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the Licence for the specific language governing permissions and
15 | * limitations under the Licence.
16 | */
17 | package net.sberg.openkim.user;
18 |
19 | import net.sberg.openkim.common.AbstractWebController;
20 | import org.springframework.beans.factory.annotation.Autowired;
21 | import org.springframework.http.HttpStatus;
22 | import org.springframework.stereotype.Controller;
23 | import org.springframework.web.bind.annotation.*;
24 |
25 | @Controller
26 | public class UserController extends AbstractWebController {
27 |
28 | @Autowired
29 | private UserService userService;
30 |
31 | @RequestMapping(value = "/user/settings", method = RequestMethod.GET)
32 | @ResponseStatus(value = HttpStatus.OK)
33 | public String laden() throws Exception {
34 | return "user/userSettings";
35 | }
36 |
37 | @RequestMapping(value = "/user/changePwd", method = RequestMethod.POST)
38 | @ResponseStatus(value = HttpStatus.OK)
39 | @ResponseBody
40 | public boolean aendern(@RequestBody UserChangePwd userChangePwd) throws Exception {
41 | return userService.updateExistingUser(userChangePwd);
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | servlet:
3 | context-path: /
4 | port: 8080
5 | error:
6 | include-stacktrace: always
7 |
8 |
9 | versions:
10 | #openKim version set by pom.xml project version
11 | openKim: '@project.version@'
12 | ProduktTypVersion: '1.5.0-2'
13 |
14 | konfiguration:
15 | gatewayHostDefaultWert: 127.0.0.1
16 | smtpGatewayPortDefaultWert: 8888
17 | pop3GatewayPortDefaultWert: 8889
18 | encryptionKeys: qwzwebnjcv5461237884,fgjnkfnkndfk,tgzjnbdnbjdfngj,dkgfjgkfjgkjfgkfxccnv,rfughnvvcnbfjgjvnxcbn
19 | encryptPasswords: true
20 |
21 | gatewaykeystore:
22 | password: 123!sberg!456
23 |
24 | spring:
25 | main:
26 | allow-bean-definition-overriding: true
27 | ldap:
28 | base: dc=data,dc=vzd
29 |
30 | security:
31 | authFile: "data/auth.cfg"
32 | users:
33 | - username: admin
34 | password: "admin"
35 | authorities: ROLE_ADMIN
36 | - username: monitoring
37 | password: "monitoring"
38 | authorities: ROLE_MONITORING
39 |
40 | ---
41 |
42 | spring:
43 | config.activate.on-profile: dev
44 |
45 | server:
46 | servlet:
47 | context-path: /openkim
48 |
--------------------------------------------------------------------------------
/src/main/resources/fonts/Arial/arial.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/fonts/Arial/arial.ttf
--------------------------------------------------------------------------------
/src/main/resources/fonts/Arial/arialbd.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/fonts/Arial/arialbd.ttf
--------------------------------------------------------------------------------
/src/main/resources/fonts/Arial/arialbi.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/fonts/Arial/arialbi.ttf
--------------------------------------------------------------------------------
/src/main/resources/fonts/Arial/ariali.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/fonts/Arial/ariali.ttf
--------------------------------------------------------------------------------
/src/main/resources/fonts/arial.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/main/resources/jasperreports_extension.properties:
--------------------------------------------------------------------------------
1 | net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
2 | net.sf.jasperreports.extension.simple.font.families.arial=fonts/arial.xml
--------------------------------------------------------------------------------
/src/main/resources/logback-spring.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
7 |
9 |
10 |
11 |
13 |
15 |
17 |
18 |
19 |
20 | ${CONSOLE_LOG_PATTERN}
21 |
22 |
23 |
24 |
25 |
26 | ${CONSOLE_LOG_PATTERN_NO_COLOR}
27 |
28 |
29 |
30 |
31 | logs/${LOG_FILE}.log
32 |
33 | logs/${LOG_FILE}_%d{yyyy-MM-dd}.log
34 |
35 |
36 |
37 | ${FILE_LOG_PATTERN}
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/src/main/resources/static/css/dashboard-old.css:
--------------------------------------------------------------------------------
1 | body {
2 | font-size: .875rem;
3 | }
4 |
5 | .feather {
6 | width: 16px;
7 | height: 16px;
8 | vertical-align: text-bottom;
9 | }
10 |
11 | /*
12 | * Sidebar
13 | */
14 |
15 | .sidebar {
16 | position: fixed;
17 | top: 0;
18 | bottom: 0;
19 | left: 0;
20 | z-index: 100; /* Behind the navbar */
21 | padding: 0;
22 | box-shadow: inset -1px 0 0 rgba(0, 0, 0, .1);
23 | }
24 |
25 | .sidebar-sticky {
26 | position: -webkit-sticky;
27 | position: sticky;
28 | top: 48px; /* Height of navbar */
29 | height: calc(100vh - 48px);
30 | padding-top: .5rem;
31 | overflow-x: hidden;
32 | overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */
33 | }
34 |
35 | .sidebar .nav-link {
36 | font-weight: 500;
37 | color: #333;
38 | }
39 |
40 | .sidebar .nav-link .feather {
41 | margin-right: 4px;
42 | color: #999;
43 | }
44 |
45 | .sidebar .nav-link.active {
46 | color: #007bff;
47 | }
48 |
49 | .sidebar .nav-link:hover .feather,
50 | .sidebar .nav-link.active .feather {
51 | color: inherit;
52 | }
53 |
54 | .sidebar-heading {
55 | font-size: .75rem;
56 | text-transform: uppercase;
57 | }
58 |
59 | /*
60 | * Navbar
61 | */
62 | .navbar-top {
63 | background-color: rgba(52, 58, 64, .25);
64 | box-shadow: inset -1px 0 0 rgba(0, 0, 0, .25);
65 | }
66 |
67 | .navbar-brand {
68 | padding-top: .75rem;
69 | padding-bottom: .75rem;
70 | font-size: 1rem;
71 | }
72 |
73 | .navbar .form-control {
74 | padding: .75rem 1rem;
75 | border-width: 0;
76 | border-radius: 0;
77 | }
78 |
79 | .form-control-dark {
80 | color: #fff;
81 | background-color: rgba(255, 255, 255, .1);
82 | border-color: rgba(255, 255, 255, .1);
83 | }
84 |
85 | .form-control-dark:focus {
86 | border-color: transparent;
87 | box-shadow: 0 0 0 3px rgba(255, 255, 255, .25);
88 | }
89 |
90 | /*
91 | * Utilities
92 | */
93 |
94 | .border-top {
95 | border-top: 1px solid #e5e5e5;
96 | }
97 |
98 | .border-bottom {
99 | border-bottom: 1px solid #e5e5e5;
100 | }
101 |
102 | .text-break {
103 | word-wrap: break-word !important;
104 | word-break: break-word !important;
105 | }
106 |
107 | .cut-text {
108 | text-overflow: ellipsis;
109 | overflow: hidden;
110 | }
111 |
--------------------------------------------------------------------------------
/src/main/resources/static/css/dashboard.css:
--------------------------------------------------------------------------------
1 | body {
2 | font-size: .875rem;
3 | }
4 |
5 | .feather {
6 | width: 16px;
7 | height: 16px;
8 | vertical-align: text-bottom;
9 | }
10 |
11 | /*
12 | * Sidebar
13 | */
14 |
15 | .sidebar {
16 | position: fixed;
17 | top: 0;
18 | bottom: 0;
19 | left: 0;
20 | z-index: 100; /* Behind the navbar */
21 | padding: 48px 0 0; /* Height of navbar */
22 | box-shadow: inset -1px 0 0 rgba(0, 0, 0, .1);
23 | }
24 |
25 | .sidebar-sticky {
26 | position: relative;
27 | top: 0;
28 | height: calc(100vh - 48px);
29 | padding-top: .5rem;
30 | overflow-x: hidden;
31 | overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */
32 | }
33 |
34 | @supports ((position: -webkit-sticky) or (position: sticky)) {
35 | .sidebar-sticky {
36 | position: -webkit-sticky;
37 | position: sticky;
38 | }
39 | }
40 |
41 | .sidebar .nav-link {
42 | font-weight: 500;
43 | color: #333;
44 | }
45 |
46 | .sidebar .nav-link .feather {
47 | margin-right: 4px;
48 | color: #999;
49 | }
50 |
51 | .sidebar .nav-link.active {
52 | color: #007bff;
53 | }
54 |
55 | .sidebar .nav-link:hover .feather,
56 | .sidebar .nav-link.active .feather {
57 | color: inherit;
58 | }
59 |
60 | .sidebar-heading {
61 | font-size: .75rem;
62 | text-transform: uppercase;
63 | }
64 |
65 | /*
66 | * Content
67 | */
68 |
69 | [role="main"] {
70 | padding-top: 48px; /* Space for fixed navbar */
71 | }
72 |
73 | /*
74 | * Navbar
75 | */
76 |
77 | .navbar-brand {
78 | padding-top: .75rem;
79 | padding-bottom: .75rem;
80 | font-size: 1rem;
81 | /*
82 | background-color: rgba(0, 0, 0, .25);
83 | box-shadow: inset -1px 0 0 rgba(0, 0, 0, .25);
84 | */
85 | }
86 |
87 | .navbar .form-control {
88 | padding: .75rem 1rem;
89 | border-width: 0;
90 | border-radius: 0;
91 | }
92 |
93 | .form-control-dark {
94 | color: #fff;
95 | background-color: rgba(255, 255, 255, .1);
96 | border-color: rgba(255, 255, 255, .1);
97 | }
98 |
99 | .form-control-dark:focus {
100 | border-color: transparent;
101 | box-shadow: 0 0 0 3px rgba(255, 255, 255, .25);
102 | }
--------------------------------------------------------------------------------
/src/main/resources/static/css/regular.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 5.14.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | */
5 | @font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:"Font Awesome 5 Free";font-weight:400}
--------------------------------------------------------------------------------
/src/main/resources/static/css/solid.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 5.14.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | */
5 | @font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:"Font Awesome 5 Free";font-weight:900}
--------------------------------------------------------------------------------
/src/main/resources/static/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/favicon.ico
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/fa-brands-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/fa-brands-400.eot
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/fa-brands-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/fa-brands-400.ttf
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/fa-brands-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/fa-brands-400.woff
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/fa-brands-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/fa-brands-400.woff2
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/fa-regular-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/fa-regular-400.eot
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/fa-regular-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/fa-regular-400.ttf
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/fa-regular-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/fa-regular-400.woff
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/fa-regular-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/fa-regular-400.woff2
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/fa-solid-900.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/fa-solid-900.eot
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/fa-solid-900.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/fa-solid-900.ttf
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/fa-solid-900.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/fa-solid-900.woff
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/fa-solid-900.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/fa-solid-900.woff2
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-300.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-300.eot
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-300.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-300.ttf
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-300.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-300.woff
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-300.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-300.woff2
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-300italic.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-300italic.eot
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-300italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-300italic.ttf
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-300italic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-300italic.woff
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-300italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-300italic.woff2
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-500.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-500.eot
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-500.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-500.ttf
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-500.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-500.woff
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-500.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-500.woff2
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-500italic.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-500italic.eot
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-500italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-500italic.ttf
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-500italic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-500italic.woff
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-500italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-500italic.woff2
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-600.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-600.eot
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-600.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-600.ttf
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-600.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-600.woff
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-600.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-600.woff2
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-600italic.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-600italic.eot
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-600italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-600italic.ttf
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-600italic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-600italic.woff
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-600italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-600italic.woff2
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-700.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-700.eot
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-700.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-700.ttf
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-700.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-700.woff
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-700.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-700.woff2
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-700italic.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-700italic.eot
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-700italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-700italic.ttf
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-700italic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-700italic.woff
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-700italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-700italic.woff2
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-800.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-800.eot
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-800.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-800.ttf
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-800.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-800.woff
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-800.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-800.woff2
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-800italic.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-800italic.eot
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-800italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-800italic.ttf
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-800italic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-800italic.woff
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-800italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-800italic.woff2
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-italic.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-italic.eot
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-italic.ttf
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-italic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-italic.woff
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-italic.woff2
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-regular.eot
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-regular.ttf
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-regular.woff
--------------------------------------------------------------------------------
/src/main/resources/static/fonts/open-sans-v26-latin-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/fonts/open-sans-v26-latin-regular.woff2
--------------------------------------------------------------------------------
/src/main/resources/static/img/bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/img/bg.jpg
--------------------------------------------------------------------------------
/src/main/resources/static/img/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/img/favicon.ico
--------------------------------------------------------------------------------
/src/main/resources/static/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sberg-net/openkim/0a5ee682b6a6e447e84750094492f49ee387afdb/src/main/resources/static/img/logo.png
--------------------------------------------------------------------------------
/src/main/resources/static/img/mail.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
--------------------------------------------------------------------------------
/src/main/resources/static/js/login.js:
--------------------------------------------------------------------------------
1 | $(window).on("scroll", () => {
2 | const $body = $("body");
3 | const scrollClass = "scroll";
4 |
5 | const $navbar = $("nav");
6 | const navbarClassDark = "navbar-dark";
7 | const navbarClassLight = "navbar-light";
8 |
9 | const $navbtns = $(".nav-btns");
10 | const navbtnsClassDark = "text-white";
11 | const navbtnsClassLight = "text-black";
12 |
13 | const $logo = $("#logo");
14 | const logoClassLight = "ebook-light";
15 |
16 | if (this.matchMedia("(min-width: 992px)").matches) {
17 | const scrollY = $(this).scrollTop();
18 |
19 | if (scrollY > 0) {
20 | $body.addClass(scrollClass);
21 |
22 | $navbar.removeClass(navbarClassDark);
23 | $navbar.addClass(navbarClassLight);
24 |
25 | $navbtns.removeClass(navbtnsClassDark);
26 | $navbtns.addClass(navbtnsClassLight);
27 |
28 | $logo.removeClass(logoClassLight);
29 | } else {
30 | $body.removeClass(scrollClass);
31 |
32 | $navbar.addClass(navbarClassDark);
33 | $navbar.removeClass(navbarClassLight);
34 |
35 | $navbtns.addClass(navbtnsClassDark);
36 | $navbtns.removeClass(navbtnsClassLight);
37 |
38 | $logo.addClass(logoClassLight);
39 | }
40 | } else {
41 | $body.removeClass(scrollClass);
42 |
43 | $navbar.removeClass(navbarClassDark);
44 | $navbar.addClass(navbarClassLight);
45 |
46 | $navbtns.removeClass(navbtnsClassDark);
47 | $navbtns.addClass(navbtnsClassLight);
48 |
49 | $logo.removeClass(logoClassLight);
50 | }
51 | });
52 |
53 | $(window).on('load', function () {
54 | if (window.location.href.indexOf('?error') > -1) {
55 | $('#fehlerModal').modal();
56 | }
57 |
58 | $("#login-form").submit(function (e) {
59 | const form = $("#login-form");
60 | const submit = $("#login-submit");
61 | const close = $("#login-close")
62 |
63 | if (form[0].checkValidity() === false) {
64 | e.preventDefault();
65 | e.stopPropagation();
66 | } else {
67 | submit.prop('disabled', true);
68 | close.prop('disabled', true);
69 | submit.prepend($(''));
70 | }
71 | form.addClass('was-validated');
72 | });
73 |
74 | if (!this.matchMedia("(min-width: 992px)").matches) {
75 | $("nav").removeClass("navbar-dark");
76 | $("nav").addClass("navbar-light");
77 |
78 | $(".nav-btns").removeClass("text-white");
79 | $(".nav-btns").addClass("text-black");
80 |
81 | $("#logo").removeClass("ebook-light");
82 | }
83 |
84 | $(".page-header .nav-link, .navbar-brand").on("click", function (e) {
85 | e.preventDefault();
86 | const href = $(this).attr("href");
87 | $("html, body").animate({
88 | scrollTop: $(href).offset().top - 71
89 | }, 600);
90 | });
91 | });
92 |
--------------------------------------------------------------------------------
/src/main/resources/templates/dashboard/dashboard.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | OpenKIM - Dashboard
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |