{"id":16155176,"url":"https://github.com/guusdk/s2sexpectedoutcomegenerator","last_synced_at":"2025-04-07T00:40:00.736Z","repository":{"id":237456396,"uuid":"624553230","full_name":"guusdk/S2SExpectedOutcomeGenerator","owner":"guusdk","description":"A generator of expected outcomes of an XMPP server-to-server unidirectional connection.","archived":false,"fork":false,"pushed_at":"2023-06-15T14:39:46.000Z","size":22,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-13T06:19:01.963Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/guusdk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-06T18:18:58.000Z","updated_at":"2023-04-06T18:19:16.000Z","dependencies_parsed_at":"2024-05-02T02:48:58.038Z","dependency_job_id":null,"html_url":"https://github.com/guusdk/S2SExpectedOutcomeGenerator","commit_stats":null,"previous_names":["guusdk/s2sexpectedoutcomegenerator"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guusdk%2FS2SExpectedOutcomeGenerator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guusdk%2FS2SExpectedOutcomeGenerator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guusdk%2FS2SExpectedOutcomeGenerator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guusdk%2FS2SExpectedOutcomeGenerator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/guusdk","download_url":"https://codeload.github.com/guusdk/S2SExpectedOutcomeGenerator/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247574087,"owners_count":20960495,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-10T01:20:00.658Z","updated_at":"2025-04-07T00:40:00.681Z","avatar_url":"https://github.com/guusdk.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"A generator of expected outcomes of an XMPP server-to-server unidirectional connection from one server (the Initiating Entity) to another server (the Receiving Entity).\n\nThis code defines a server configuration as a collection of configuration options. The code generates scenarios based on each possible server configuration on both ends of the to-be-established connection. For each scenario, the 'expected outcome' is calculated.\n\nIt is explicitly *not advisable* to use the output of this project as an authoritative definition! This project was created to help develop understanding of relevant XMPP specifications (such as [RFC6120](https://datatracker.ietf.org/doc/html/rfc6120)), generate data for discussing the desirability of certain outcomes, and to \nfacilitate the creation of (unit) tests in a specific XMPP project. Many of these outcomes are open to discussion.\n\n### Server Settings\nServer Settings, as represented by the `ServerSettings` class, include (but may in future versions not be limited to):\n- `EncryptionPolicy` defining if a server requires, allows or prohibits encryption\n- `CertificateState` defining if the server offers a TLS certificate, and if that's valid (isn't expired, isn't self-signed, uses a root CA that's recognized by the peer, uses a correct identity, etc).\n- `DialbackSupported` defining if the server allows the Dialback protocol (which is an authentication protocol) to be used.\n\nIt is assumed that a server _always_ allows authentication to occur using SASL EXTERNAL, when possible.\n\n### Expected Outcomes\nFour distinct outcomes are defined, as represented by the `ExpectedOutcome` class:\n- `NO_CONNECTION` - Connection cannot be established. In the current implementation, this includes scenarios in which connections could not be authenticated (some form of authentication is assumed to be mandatory).\n- `NON_ENCRYPTED_WITH_DIALBACK_AUTH` - Connection without encryption, Initiating Entity is authenticated by the Receiving Entity using the Dialback protocol.\n- `ENCRYPTED_WITH_DIALBACK_AUTH` - Connection that is encrypted, Initiating Entity is authenticated by the Receiving Entity using the Dialback protocol.\n- `ENCRYPTED_WITH_SASLEXTERNAL_AUTH` - Connection that is encrypted, Initiating Entity is authenticated by the Receiving Entity using the SASL EXTERNAL mechanism.\n\n# Compiling and running the code\nThis implementation requires Java 11 or later to compile and run. Apache Maven is used for the project framework (although no dependencies are defined. It should be possible to compile this using the basic `javac` compiler).\n\nTo compile the project:\n```bash\nmvn clean package\n```\n\nThis will generate an executable JAR file in the `target` directory.\n\nExecuting this JAR file (eg: `java -jar target/S2SExpectedOutcomeGenerator-1.0-SNAPSHOT.jar`) will cause all scenarios and their calculated expected outcome to be printed to the standard output stream and into a HTML file, of which the file location is printed to the standard output stream.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguusdk%2Fs2sexpectedoutcomegenerator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguusdk%2Fs2sexpectedoutcomegenerator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguusdk%2Fs2sexpectedoutcomegenerator/lists"}