Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagetext
titleDefault configuration: enable HTTP communication
linenumberstrue
# Allow HTTP connections without authentication
js7.web.server.auth.public = true
js7webserver





authpublic<true>true|<false>false
  • This setting specifies public access to a Controller if incoming HTTP connections are to be used. If used with a value true then authentication is not applied.
  • Default: false true

Anchor
js7-journal-cluster
js7-journal-cluster
Controller Cluster Configuration

...

  • A Secondary Controller instance specifies this setting to indicate that this instance starts as a standby node (Backup). When this setting is not in place, both instances of a Controller Cluster will start as standalone instances.
  • This setting is relevant for initial operation only. It is independent of which Controller instance later on will be the active one and which instance will be the standby one.
  • This setting has to be added by the user before starting a Secondary Controller.

...

js7journalcluster





node





Primary<url>




Backup<url>




is-backup<yes>yes|<no>no
  • This setting is used for Controller instances in cluster mode only, it is not used for standalone Controller instances.
  • The registration of Primary and Secondary Controller instances is performed by the JOC Cockpit during initial operation.
    • Therefore the only setting required for cluster operation is:
      • js7.journal.cluster.node.is-backup=yes: For a Secondary Controller instance this setting specifies that during initial operation the given instance will be the inactive standby node.
    • Additional settings can be applied. However, we recommend that the JOC Cockpit is used instead.
      • nodes
        • Primary, Backup: For a Primary Controller instance this setting specifies the URLs of the Primary and Backup (Secondary) instance. The URL includes specification of the http/https protocol, the hostname and port.

...

Explanation:

  • The Controller verifies the signature signatures of deployable scheduling objects such as workflows during deployment. This can be performed using PGP and X.509 signatures. 
  • The trusted-signature-keys setting specifies the location of PGP public keys and X.509 certificates.
  • If no PGP public keys are used or if no X.509 certificates are used then this setting should not be used as it is expected that the indicated directory is populated with public keys or certificates respectively.

...

Code Block
languageyml
linenumberstrue
js7 {
    auth {
        # User accounts for https connections
        users {
            # History account of JOC Cockpit (used to release events)
            History {
                # for use with TLS mutual authentication
                distinguished-names=[
                    "DNQ=SOS CA, CN=joc-2-0-primary, OU=IT, O=SOS, L=Berlin, ST=Berlin, C=DE",
                    "DNQ=SOS CA, CN=joc-2-0-secondary, OU=IT, O=SOS, L=Berlin, ST=Berlin, C=DE"
                ]

                # for use with password authentication (default password stored with JOC Cockpit Settings)
                password="sha512:B793649879D61613FD3F711B68F7FF3DB19F2FE2D2C136E8523ABC87612219D5AECB4A09035AD88D544E227400A0A56F02BC990CF0D4CB348F8413DE00BCBF08"
                # for use of an empty password
                # password="plain:"
            }

            # JOC account of JOC Cockpit (requires UpdateItem permission for deployment)
            JOC {
                # for use with TLS mutual authentication
                distinguished-names=[
                    "DNQ=SOS CA, CN=joc-2-0-primary, OU=IT, O=SOS, L=Berlin, ST=Berlin, C=DE",
                    "DNQ=SOS CA, CN=joc-2-0-secondary, OU=IT, O=SOS, L=Berlin, ST=Berlin, C=DE"
                ]

                # for use with password authentication (default password stored with JOC Cockpit Settings)
                password="sha512:3662FD6BF84C6B8385FC15F66A137AB75C755147A81CC7AE64092BFE8A18723A7C049D459AB35C059B78FD6028BB61DCFC55801AE3894D2B52401643F17A07FE"

                permissions=[
# for use of an empty password
               UpdateItem # password="plain:"

                ]permissions=[
            }
        }UpdateItem
     }
}

Explanation:

Password Authentication

...

Code Block
languageyml
linenumberstrue
js7 {
    auth {
     ]
   # User accounts for https connections
        users {}
        }
    # History account of JOC Cockpit (used to release events)
            History {
                # for use with password authentication (default password stored with JOC Cockpit Settings)
                password="sha512:B793649879D61613FD3F711B68F7FF3DB19F2FE2D2C136E8523ABC87612219D5AECB4A09035AD88D544E227400A0A56F02BC990CF0D4CB348F8413DE00BCBF08"
            }

            # JOC account of JOC Cockpit (requires UpdateItem permission for deployment)
            JOC {
                # for use with password authentication (default password stored with JOC Cockpit Settings)
                password="sha512:3662FD6BF84C6B8385FC15F66A137AB75C755147A81CC7AE64092BFE8A18723A7C049D459AB35C059B78FD6028BB61DCFC55801AE3894D2B52401643F17A07FE"

                permissions=[
                    UpdateItem
                ]
            }
        }
    }
}

Explanation:

Controller Cluster Configuration

Client Authentication

...

}
}

Explanation:

  • History
    • Settings in this section are used for the History Service of JOC Cockpit instances that access the given Controller.
    • distinguished-names
      • Specifies the distinguished name as given with the subject of the Client Authentication Certificate for incoming HTTPS connections of JOC Cockpit instances.
      • Any number of distinguished names can be specified allowing a number of incoming HTTPS connections from different JOC Cockpit instances.
      • Except for whitespace between attributes the precise sequence and values as available from the certificate's subject has to match this property value.
      • Note that the common name (CN) element in the distinguished name has to match the fully qualified domain name (FQDN) of a JOC Cockpit instance's host.
      • The following command can be used to read the distinguished name from a certificate file:


        Code Block
        titleExample for OpenSSL command to read a certificate's distinguished name
        # read distinguished name from the JOC Cockpit instance's certificate file (.crt)
        openssl x509 -in joc-primary.crt -noout -nameopt RFC2253 -subject
        
        # output is returned with a prefix "subject= " or similar that is not part of the distinguished name
        # subject= DNQ=SOS CA,CN=joc-2-0-primary,OU=IT,O=SOS,L=Berlin,ST=Berlin,C=DE
    • password
      • A default password is specified with the section joc of the JS7 - Settings page of JOC Cockpit and in the private.conf file. The password is used for authentication of the History service account with the Controller, for details see next chapter about password authentication.
      • The password setting cannot be omitted, however, an empty password can be specified like this:
        • password="plain:"
      • At the same time the password setting in JOC Cockpit has to be assigned an empty value.
  • JOC
    • Settings in this section are used for services running in JOC Cockpit instances that access the given Controller.
    • distinguished-names:  The same applies as for the History setting described above.
    • permissions: JOC Cockpit requires the UpdateItem permission to enable users to deploy objects such as workflows.
    • password: The same applies as for the History setting described above.

Password Authentication

Anchor
js7-auth-users-password-JOC
js7-auth-users-password-JOC
JOC Cockpit Connections

Code Block
languageyml
linenumberstrue
js7 {
    auth {
        # User accounts for https connections
Code Block
languageyml
linenumberstrue
js7 {
    auth {
        # User accounts for https connections
        users {
            # Controller ID for connections by primary/secondary Controller instance
            Controller {
                distinguished-names=[
                    "DNQ=SOS CA, CN=controller-2-0-secondary, OU=IT, O=SOS, L=Berlin, ST=Berlin, C=DE"
        users {
       ]
     # History account of JOC Cockpit  }(used to release events)
        }
    }
}

Explanation:

...

Code Block
titleExample for OpenSSL command to read a certificate's distinguished name
# read distinguished name from the pairing Controller instance's certificate
openssl x509 -in centostest-secondary.crt -noout -nameopt RFC2253 -subject

# output is returned with a prefix "subject= " or similar that is not part of the distinguished name
# subject= DNQ=SOS CA,CN=director-2-0-secondary,OU=IT,O=SOS,L=Berlin,ST=Berlin,C=DE
    History {
                # for use with password authentication (default password stored with JOC Cockpit Settings)
                password="sha512:B793649879D61613FD3F711B68F7FF3DB19F2FE2D2C136E8523ABC87612219D5AECB4A09035AD88D544E227400A0A56F02BC990CF0D4CB348F8413DE00BCBF08"
            }

            # JOC account of JOC Cockpit (requires UpdateItem permission for deployment)
            JOC {
                # for use with password authentication (default password stored with JOC Cockpit Settings)
                password="sha512:3662FD6BF84C6B8385FC15F66A137AB75C755147A81CC7AE64092BFE8A18723A7C049D459AB35C059B78FD6028BB61DCFC55801AE3894D2B52401643F17A07FE"

                permissions=[
                    UpdateItem
                ]
            }
        }
    }
}

Explanation:

  • History
    • Settings in this section are used for the History Service of JOC Cockpit instances that access the given Controller.
  • JOC
    • Settings in this section are used for services running in JOC Cockpit instances that access the given Controller.
    • permissions: JOC Cockpit requires the UpdateItem permission to enable users to deploy objects such as workflows.
  • The password is used for authentication of the History and JOC service accounts with the Controller. Both accounts are typically running in the same JOC Cockpit instance. 
    • If HTTP connections are used then the password is the only means for authentication.
    • The password is specified with the section joc of the JS7 - Settings page of JOC Cockpit and in the private.conf file.
      • User Input to the Settings page of JOC Cockpit can look like this:

        Image Added

        Input to the GUI simply accepts the password and does not require to use the prefixes sha512: or plain:.
      • In the private.conf file a hashed value or a plain text value can be specified like this:
        • password="sha512:B793649879D6..."
        • password="plain:JS7-History"
    • If the password is modified in the private.conf file then it also has to be modified in the JOC Cockpit settings too in order to make passwords match.
    • The password setting cannot be omitted, however, an empty password can be specified, for example with mutual authentication HTTPS connections, like this:
      • password="plain:"
    • From the private.conf file that ships by default the plain text value and the hashed values are:
      • History: 
        • Plain Text: JS7-History
        • Hash: sha512:B793649879D61613FD3F711B68F7FF3DB19F2FE2D2C136E8523ABC87612219D5AECB4A09035AD88D544E227400A0A56F02BC990CF0D4CB348F8413DE00BCBF08
      • JOC:
        • Plain Text: JS7-JOC
        • Hash: sha512:3662FD6BF84C6B8385FC15F66A137AB75C755147A81CC7AE64092BFE8A18723A7C049D459AB35C059B78FD6028BB61DCFC55801AE3894D2B52401643F17A07FE

Controller Cluster Configuration

Client Authentication

Anchor
js7-auth-users-Controller
js7-auth-users-Controller
Controller Connections

JOC Cockpit Connections

The configuration is the same as for a Standalone Controller, see JOC Cockpit Connections

Password Authentication

...

Code Block
languageyml
linenumberstrue
js7 {
    auth {
        # User accounts for https connections
        users {
            # Controller ID for connections by primary/secondary Controller instance
            Controller {
                password = "plain:secret"
            }
        }
    }
}

Explanation:

  • This setting applies to the use of a Controller Cluster.

JOC Cockpit Connections

The configuration is the same as for a Standalone Controller, see JOC Cockpit Connections.

Keystore and Truststore

Settings in this section apply to both Standalone Controller and Controller Cluster instances.

...

Code Block
languageyml
linenumberstrue
js7 {
    webauth {
        # keystoreUser andaccounts truststore location for https connections
        httpsusers {
            client-keystore {
       # Controller ID for connections by primary/secondary Controller instance
         #   Default:Controller ${js7.config-directory}"/private/https-client-keystore.p12"
                file=${js7.config-directory}"/private/https-client-keystore.p12"distinguished-names=[
                key-password="jobscheduler"
    "DNQ=SOS CA, CN=controller-2-0-secondary, OU=IT,         store-password="jobscheduler"
  O=SOS, L=Berlin, ST=Berlin, C=DE"
          }
            keystore {
     ]
           # Default: ${js7.config-directory}"/private/https-keystore.p12"
        }
        file=${js7.config-directory}"/private/https-keystore.p12"
                key-password="jobscheduler"
                store-password="jobscheduler"
                # alias=
            }
            truststores=[
                {
                    # Default: ${js7.config-directory}"/private/https-truststore.p12"
        }
}

Explanation:

  • Note that the Controller element name is an example that has to be replaced by the Controller ID which is specified with the identical values during installation of both the Controller instances in a cluster.
  • The distinguished-names setting indicates the subject of the pairing Controller's Client Authentication certificate. The certificate and subject authenticate the pairing Controller without use of passwords.
    • Except for whitespace between attributes the precise sequence and values as available from the certificate's subject have to match this property value.
    • Note that the common name (CN) element in the distinguished name has to match the fully qualified domain name (FQDN) of a Controller instance's host.
    • The following command can be used to read the distinguished name from a certificate file:

      Code Block
      titleExample for OpenSSL command to read a certificate's distinguished name
      # read distinguished name from the pairing Controller instance's certificate file (.crt)
      openssl x509 -in controller-secondary.crt -noout -nameopt RFC2253 -subject
      
      # output is returned with a prefix "subject= " or similar that is not part of the distinguished name
      # subject= DNQ=SOS CA,CN=controller-2-0-secondary,OU=IT,O=SOS,L=Berlin,ST=Berlin,C=DE

JOC Cockpit Connections

The configuration is the same as for a Standalone Controller, see JOC Cockpit Connections

Password Authentication

Anchor
js7-auth-users-password-Controller
js7-auth-users-password-Controller
Controller Connections

Code Block
languageyml
linenumberstrue
js7 {
    auth {
        # User accounts  file=${js7.config-directory}"/private/https-truststore.p12"for https connections
        users {
           store-password="jobscheduler"
         # Controller ID for connections by primary/secondary Controller instance
            #Controller alias={
                }
password = "plain:secret"
          ]  }
        }
    }
}

Explanation:

  • HTTPS keystore and truststores are used to hold private keys and certificates.
    • Keystore and truststore settings accept the path to a file in PKCS12 format or in PEM format.
    • The keystore holds the Controller instance's private key and certificate. This information is used:
      • for Server Authentication with the JOC Cockpit and
      • for Client Authentication with Agents.
    • The truststore holds the certificate(s) used to verify:
      • Client Authentication certificates presented by the JOC Cockpit and
      • Server Authentication certificates presented by Agents.
    • A number of truststores can be specified
  • Optionally a separate HTTPS client keystore can be used:
    • The client keystore is used for TLS mutual authentication and holds a private key and certificate created for Client Auth extended key usage. 
    • When using TLS mutual authentication then:
      • a single certificate can be used that is generated for both Server Auth and Client Auth extended key use. In this case do not use the HTTPS client keystore but use the HTTPS keystore to hold the certificate.
      • separate certificates can be used with the certificate for Server Auth key usage being stored with the HTTPS keystore and the certificate for Client Auth key use being stored with the HTTPS client keystore.
    • For details see 
      Jira
      serverSOS JIRA
      columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
      serverId6dc67751-9d67-34cd-985b-194a8cdc9602
      keyJS-1959
  • Keystore and Truststore locations are specified. In addition:
    • a password for the private keys included in the keystore and a password for access to the keystore can be specified
    • for the truststore a password for access to the truststore can be specified.
  • Passwords for keystore and truststore are not intended for security of the configuration, they are used to verify the integrity of certificate stores as the password used for creating and reading the certificate store must be the same.
    • The key-password is used for access to a private key in a keystore.
    • The store-password setting is used for access to a keystore or to a truststore.
    • For PKCS12 keystores both settings have to use the same value. The settings can be omitted if no passwords are used.
  • The alias setting can be used for example with a keystore that holds a number of private keys from which the relevant private key is selected by its alias name.

Summary of Configuration Items

General Configuration File: controller.conf

js7.web.server: Authentication Settings

...

  • This setting specifies public access to a Controller if insecure HTTP connections are to be used. If used with the value true then HTTP Server Authentication is not applied.
  • Default: true

Security Configuration File: private.conf

...

  • This setting applies to the use of a Controller Cluster.

JOC Cockpit Connections

The configuration is the same as for a Standalone Controller, see JOC Cockpit Connections.

Keystore and Truststore

Settings in this section apply to both Standalone Controller and Controller Cluster instances.

Anchor
js7-web-https-keystore
js7-web-https-keystore
HTTPS Keystore and Truststore Access

Code Block
languageyml
linenumberstrue
js7 {
    web {
        # keystore and truststore location for https connections
        https {
            client-keystore {
                # Default: ${js7.config-directory}"/private/https-client-keystore.p12"
                file=${js7.config-directory}"/private/https-client-keystore.p12"
                key-password="jobscheduler"
                store-password="jobscheduler"
            }
            keystore {
                # Default: ${js7.config-directory}"/private/https-keystore.p12"
                file=${js7.config-directory}"/private/https-keystore.p12"
                key-password="jobscheduler"
                store-password="jobscheduler"
                # alias=
            }
            truststores=[
                {
                    # Default: ${js7.config-directory}"/private/https-truststore.p12"
                    file=${js7.config-directory}"/private/https-truststore.p12"
                    store-password="jobscheduler"
                    # alias=
                }
            ]
        }
    }
}

Explanation:

  • HTTPS keystore and truststores are used to hold private keys and certificates.
    • Keystore and truststore settings accept the path to a file in PKCS12 format or in PEM format.
    • The keystore holds the Controller instance's private key and certificate. This information is used:
      • for Server Authentication with the JOC Cockpit and
      • for Client Authentication with Agents.
    • The truststore holds the certificate(s) used to verify:
      • Client Authentication certificates presented by the JOC Cockpit and
      • Server Authentication certificates presented by Agents.
    • A number of truststores can be specified
  • Optionally a separate HTTPS client keystore can be used:
    • The client keystore is used for TLS mutual authentication and holds a private key and certificate created for Client Auth extended key usage. 
    • When using TLS mutual authentication then:
      • a single certificate can be used that is generated for both Server Auth and Client Auth extended key use. In this case do not use the HTTPS client keystore but use the HTTPS keystore to hold the certificate.
      • separate certificates can be used with the certificate for Server Auth key usage being stored with the HTTPS keystore and the certificate for Client Auth key use being stored with the HTTPS client keystore.
    • For details see 
      Jira
      serverSOS JIRA
      columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
      serverId6dc67751-9d67-34cd-985b-194a8cdc9602
      keyJS-1959
  • Keystore and Truststore locations are specified. In addition:
    • a password for the private keys included in the keystore and a password for access to the keystore can be specified
    • for the truststore a password for access to the truststore can be specified.
  • Passwords for keystore and truststore are not intended for security of the configuration, they are used to verify the integrity of certificate stores as the password used for creating and reading the certificate store must be the same.
    • The key-password is used for access to a private key in a keystore.
    • The store-password setting is used for access to a keystore or to a truststore.
    • For PKCS12 keystores both settings have to use the same value. The settings can be omitted if no passwords are used.
  • The alias setting can be used for example with a keystore that holds a number of private keys from which the relevant private key is selected by its alias name.

Summary of Configuration Items

General Configuration File: controller.conf

js7.web.server: Authentication Settings

js7webserver





authpublictrue|false
  • This setting specifies public access to a Controller if insecure HTTP connections are to be used. If used with the value true then HTTP Server Authentication is not applied.
  • Default: true

Security Configuration File: private.conf

Anchor
js7-auth-users
js7-auth-users
js7.auth.users: HTTPS Authentication and Authorization

js7authusers





<controller-id>





distinguished-names<distinguished-name>[,<distinguished-name>]



History





distinguished-names<distinguished-name>[,<distinguished-name>]




passwordplain:<password>|sha512:<password-hash>



JOC





distinguished-names<distinguished-name>[,<distinguished-name>]




passwordplain:<password>|sha512:<password-hash>




permissionsUpdateItem
  • An additional authentication mechanism is applied when using HTTPS Server Authentication certificates or public keys for incoming connections. See below: the client of the incoming connection, e.g. JOC Cockpit, is required to provide a Client Authentication certificate. This includes two certificates which are in place for a secure HTTPS connection: the given Controller's Server Authentication certificate and the JOC Cockpit's Client Authentication certificate. As an alternative to Client Authentication a password can be used.
    • The fact that a given certificate is to be used for Server Authentication and/or Client Authentication is specified with the key usage when the certificate is created and signed.
    • The distinguished name that is specified with the Controller's configuration has to match the Client Authentication Certificate's or Client public key's subject attribute. This attribute specifies the hostname and additional information that is created when the certificate or public key is generated.
  • <controller-id>
    • This element holds the Controller ID that has been specified during installation of a Standalone Controller or Controller Cluster.
    • Settings in this section are used for connections from a pairing Controller instance.
    • distinguished-names
      • Specifies the distinguished name as given with the subject of the Client Authentication Certificate for incoming HTTPS connections of a pairing Controller instance.
      • One or two distinguished names can be specified allowing incoming HTTPS connections from a Standalone Controller or Controller Cluster.
  • History

...

  • An additional authentication mechanism is applied when using HTTPS Server Authentication certificates or public keys for incoming connections. See below: the client of the incoming connection, e.g. JOC Cockpit, is required to provide a Client Authentication certificate. This includes two certificates which are in place for a secure HTTPS connection: the given Controller's Server Authentication certificate and the JOC Cockpit's Client Authentication certificate. As an alternative to Client Authentication a password can be used.
    • The fact that a given certificate is to be used for Server Authentication and/or Client Authentication is specified with the key usage when the certificate is created and signed.
    • The distinguished name that is specified with the Controller's configuration has to match the Client Authentication Certificate's or Client public key's subject attribute. This attribute specifies the hostname and additional information that is created when the certificate or public key is generated.
  • <controller-id>
    • This element holds the Controller ID that has been specified with identical values during installation of both Controller instances in a cluster.
    • Settings in this section are used for connections from a pairing Controller instance, e.g. for a Secondary Controller instance if the given configuration is used for the Primary Controller instance and vice versa. 
    • distinguished-names
      • Specifies the distinguished name as given with the subject of the Client Authentication Certificate for incoming HTTPS connections of a pairing Controller instance.
      • Any number of distinguished names can be specified allowing a number of incoming HTTPS connections from different Controller instances. At a given point in time only one pairing Controller instance can connect to the given Controller.
      • Except for whitespace between attributes the precise sequence and values as available from the certificate's subject has to match this property value.
  • History
    • Settings in this section are used for the History Service of JOC Cockpit instances that access the given Controller.
    • distinguished-names:  the same applies as for the <controller-id> setting described above. The JOC Cockpit Client Authentication certificate is used.
    • password: a symmetric password that is used for authentication of the History Service to the Controller for both HTTP and HTTPS connections, see below.
  • JOC
      Settings in this section are used for services running in JOC Cockpit instances that access the given Controller.
    • distinguished-names:  the same applies as for the <controller-id> setting described above. The JOC Cockpit Client Authentication certificate is used.
    • password: a symmetric password is used for authentication of the History Service to the Controller for both HTTP and HTTPS connections, see below.
    • permissions: JOC Cockpit requires the UpdateItem permission to enable users to deploy objects such as workflows.
    • . The JOC Cockpit Client Authentication certificate is used.
    • password: a symmetric password that is used for authentication of the History Service to the Controller for both HTTP and HTTPS connections, see below.
  • JOC
    • distinguished-names:  the same applies as for the <controller-id> setting described above. The JOC Cockpit Client Authentication certificate is used.
    • password: a symmetric password is used for authentication of the History Service to the Controller for both HTTP and HTTPS connections, see below.
    • permissions: JOC Cockpit requires the UpdateItem permission to enable users to deploy objects such as workflows.
  • The password is used for authentication of the History and JOC service accounts with the Controller. Both accounts are typically running in the same JOC Cockpit instance. The password is used for authentication of the History and JOC service accounts with the Controller. Both accounts are typically running in the same JOC Cockpit instance. 
  • If HTTP connections are used then the password is the only means for authentication. If HTTPS connections with mutual authentication are used then the password is not required as certificate based authentication is in place. However, if a password is specified then it has to match.
  • The password is specified with the section joc of the JS7 - Settings page of JOC Cockpit and in the private.conf file.User Input to the Settings page of JOC Cockpit can look like this:
    Image Removed
    Input to the GUI simply accepts the password and does not require to use the prefixes sha512: or plain:.In the private.conf file a hashed value or a plain text value can be specified like this:
  • password="sha512:B793649879D6..."
  • password="plain:JS7-History"
    • If the password is modified in the private.conf file then it also has to be modified in the JOC Cockpit settings to make the passwords match.
    • The password setting cannot be omitted, however, an empty password can be specified, for example with mutual authentication HTTPS connections, like this:
      • password="plain:"
    • From the private.conf file that ships by default the plain text value and the hashed values are:
      • History: 
        • Plain Text: JS7-History
        • Hash: sha512:B793649879D61613FD3F711B68F7FF3DB19F2FE2D2C136E8523ABC87612219D5AECB4A09035AD88D544E227400A0A56F02BC990CF0D4CB348F8413DE00BCBF08
      • JOC:
        • Plain Text: JS7-JOC
        • Hash: sha512:3662FD6BF84C6B8385FC15F66A137AB75C755147A81CC7AE64092BFE8A18723A7C049D459AB35C059B78FD6028BB61DCFC55801AE3894D2B52401643F17A07FE

...