From e32d3ecbd27170629d43349b979ff8e432506376 Mon Sep 17 00:00:00 2001 From: clonedArtie <37144216+clonedArtie@users.noreply.github.com> Date: Wed, 17 Jun 2026 14:59:35 +0200 Subject: [PATCH] Sync with master (#238) --- README.md | 11 +--- schemas/approachsettlement-v1.0.json | 43 ++++++++++++++ schemas/commodity-v3.0.json | 17 ++++-- schemas/dockingdenied-README.md | 42 ++++++++++++++ schemas/dockingdenied-v1.0.json | 82 +++++++++++++++++++++++++++ schemas/dockinggranted-README.md | 42 ++++++++++++++ schemas/dockinggranted-v1.0.json | 82 +++++++++++++++++++++++++++ schemas/fssbodysignals-README.md | 2 +- schemas/fsssignaldiscovered-v1.0.json | 4 ++ src/eddn/Relay.py | 2 +- src/eddn/conf/Settings.py | 7 ++- 11 files changed, 316 insertions(+), 18 deletions(-) create mode 100644 schemas/dockingdenied-README.md create mode 100644 schemas/dockingdenied-v1.0.json create mode 100644 schemas/dockinggranted-README.md create mode 100644 schemas/dockinggranted-v1.0.json diff --git a/README.md b/README.md index 02c97df..3e88a40 100644 --- a/README.md +++ b/README.md @@ -65,14 +65,11 @@ then you're probably looking for one of the sites listed below. NB: These are listed in name-alphabetical order and no particular ranking or endorsement is intended. -- [EDDB](https://eddb.io/) - a website which tries to act as a database of all - the data available in the game. In general EDDB tries to help finding - stuff which players are looking for. - [EDSM](https://www.edsm.net/) - originally focused on being a 'Star Map', but has since expanded its functionality. Of particular interest to in-game explorers. -- [Inara](https://inara.cz/) - a popular alternative to EDDB, with a lot of - its own unique functionality. +- [Inara](https://inara.cz/) - a popular alternative to the now defunct EDDB, + with a lot of its own unique functionality. - [Spansh](https://www.spansh.co.uk/plotter) - originally this had one tool, a 'Neutron Star' route plotter, but has since expanded into offering many other route plotting tools and general data searching. @@ -91,10 +88,6 @@ use: large, but is currently the only source of an "all known bodies" dump. Pay attention to the 'Generated' "time ago" column. -- [EDDB dumps](https://eddb.io/api) represent a snapshot of the data EDDB uses. - NB: There has been no "bodies" data for years now, EDDB itself stopped - updating or adding to this. - - [EDSM nightly dumps](https://www.edsm.net/en/nightly-dumps) represent a snapshot of the data EDSM uses. NB: there's only a "last 7 days" bodies dump as the full data proved too large to dump in a timely manner. diff --git a/schemas/approachsettlement-v1.0.json b/schemas/approachsettlement-v1.0.json index 1af5052..61b2e86 100644 --- a/schemas/approachsettlement-v1.0.json +++ b/schemas/approachsettlement-v1.0.json @@ -70,6 +70,49 @@ "maxItems" : 3, "description" : "Must be added by the sender" }, + "StationGovernment": { + "type" : "string" + }, + "StationAllegiance": { + "type" : "string" + }, + "StationEconomies": { + "type" : "array", + "items" : { + "type" : "object", + "additionalProperties" : false, + "properties": { + "Name": { + "type" : "string" + }, + "Proportion": { + "type" : "number" + } + }, + "patternProperties" : { + "_Localised$" : { "$ref" : "#/definitions/disallowed" } + } + } + }, + "StationFaction": { + "type" : "object", + "additionalProperties" : false, + "properties": { + "Name": { + "type" : "string" + }, + "FactionState": { + "type" : "string" + } + } + }, + "StationServices": { + "type" : "array", + "items" : { "type": "string" } + }, + "StationEconomy": { + "type" : "string" + }, "SystemAddress": { "type" : "integer" }, diff --git a/schemas/commodity-v3.0.json b/schemas/commodity-v3.0.json index 4609ace..4d49f77 100644 --- a/schemas/commodity-v3.0.json +++ b/schemas/commodity-v3.0.json @@ -44,13 +44,22 @@ "properties" : { "systemName": { "type" : "string", + "renamed" : "StarSystem", "minLength" : 1 }, "stationName": { "type" : "string", - "renamed" : "StarSystem", + "renamed" : "StationName", "minLength" : 1 }, + "stationType": { + "type" : "string", + "renamed" : "StationType" + }, + "carrierDockingAccess": { + "type" : "string", + "renamed" : "CarrierDockingAccess" + }, "marketId": { "type" : "integer", "renamed" : "MarketID" @@ -87,7 +96,7 @@ }, "buyPrice": { "type" : "integer", - "renaamed" : "BuyPrice", + "renamed" : "BuyPrice", "description" : "Price to buy from the market" }, "stock": { @@ -160,10 +169,6 @@ "type" : "string", "minLength" : 1 } - }, - "StationType": { - "$ref" : "#/definitions/disallowed", - "description" : "Not present in CAPI data, so removed from Journal-sourced data" } } } diff --git a/schemas/dockingdenied-README.md b/schemas/dockingdenied-README.md new file mode 100644 index 0000000..665c0cd --- /dev/null +++ b/schemas/dockingdenied-README.md @@ -0,0 +1,42 @@ +# EDDN DockingDenied Schema + +## Introduction +Here we document how to take data from an ED `` Journal +Event and properly structure it for sending to EDDN. + +Please consult [EDDN Schemas README](./README-EDDN-schemas.md) for general +documentation for a schema such as this. + +If you find any discrepancies between what this document says and what is +defined in the relevant Schema file, then you should, in the first instance, +assume that it is the Schema file that is correct. +**PLEASE open +[an issue on GitHub](https://github.com/EDCD/EDDN/issues/new/choose) +to report any such anomalies you find so that we can check and resolve the +discrepancy.** + +## Senders +The primary data source for this schema is the ED Journal event +`DockingDenied`. + +Examples: + +```json +{ + "timestamp":"2022-06-10T10:09:41Z", + "event":"DockingDenied", + "Reason":"RestrictedAccess", + "MarketID":3706117376, + "StationName":"V7G-T1G", + "StationType":"FleetCarrier" +} +``` + +### Augmentations +#### horizons and odyssey flags +Please read [horizons and odyssey flags](../docs/Developers.md#horizons-and-odyssey-flags) +in the Developers' documentation. + +#### gameversion and gamebuild +You **MUST** always set these as per [the relevant section](../docs/Developers.md#gameversions-and-gamebuild) +of the Developers' documentation. diff --git a/schemas/dockingdenied-v1.0.json b/schemas/dockingdenied-v1.0.json new file mode 100644 index 0000000..625f887 --- /dev/null +++ b/schemas/dockingdenied-v1.0.json @@ -0,0 +1,82 @@ +{ + "$schema" : "http://json-schema.org/draft-04/schema#", + "id" : "https://eddn.edcd.io/schemas/dockingdenied/1#", + "type" : "object", + "additionalProperties" : false, + "required": [ "$schemaRef", "header", "message" ], + "properties": { + "$schemaRef": { + "type" : "string" + }, + "header": { + "type" : "object", + "additionalProperties" : true, + "required" : [ "uploaderID", "softwareName", "softwareVersion" ], + "properties" : { + "uploaderID": { + "type" : "string" + }, + "gameversion": { + "type" : "string", + "description" : "From Fileheader event if available, else LoadGame if available there." + }, + "gamebuild": { + "type" : "string", + "description" : "The `build` value from a Fileheader event if available, else LoadGame if available there." + }, + "softwareName": { + "type" : "string" + }, + "softwareVersion": { + "type" : "string" + }, + "gatewayTimestamp": { + "type" : "string", + "format" : "date-time", + "description" : "Timestamp upon receipt at the gateway. If present, this property will be overwritten by the gateway; submitters are not intended to populate this property." + } + } + }, + "message": { + "type" : "object", + "description" : "Contains all properties from the listed events in the client's journal minus the Localised strings and the properties marked below as 'disallowed'", + "additionalProperties" : false, + "required" : [ "timestamp", "event", "MarketID", "StationName", "Reason" ], + "properties" : { + "timestamp": { + "type" : "string", + "format" : "date-time" + }, + "event" : { + "enum" : [ "DockingDenied" ] + }, + "horizons": { + "type" : "boolean", + "description" : "Whether the sending Cmdr has a Horizons pass." + }, + "odyssey": { + "type" : "boolean", + "description" : "Whether the sending Cmdr has an Odyssey expansion." + }, + "MarketID": { + "type" : "integer" + }, + "StationName": { + "type" : "string", + "description" : "Name of station" + }, + "StationType": { + "type" : "string", + "description" : "Type of station" + }, + "Reason": { + "type" : "string", + "description" : "Reason docking was denied" + } + } + } + }, + "definitions": { + "disallowed" : { "not" : { "type": [ "array", "boolean", "integer", "number", "null", "object", "string" ] } } + } +} diff --git a/schemas/dockinggranted-README.md b/schemas/dockinggranted-README.md new file mode 100644 index 0000000..2616bf9 --- /dev/null +++ b/schemas/dockinggranted-README.md @@ -0,0 +1,42 @@ +# EDDN DockingGranted Schema + +## Introduction +Here we document how to take data from an ED `` Journal +Event and properly structure it for sending to EDDN. + +Please consult [EDDN Schemas README](./README-EDDN-schemas.md) for general +documentation for a schema such as this. + +If you find any discrepancies between what this document says and what is +defined in the relevant Schema file, then you should, in the first instance, +assume that it is the Schema file that is correct. +**PLEASE open +[an issue on GitHub](https://github.com/EDCD/EDDN/issues/new/choose) +to report any such anomalies you find so that we can check and resolve the +discrepancy.** + +## Senders +The primary data source for this schema is the ED Journal event +`DockingGranted`. + +Examples: + +```json +{ + "timestamp":"2023-10-01T14:56:34Z", + "event":"DockingGranted", + "LandingPad":41, + "MarketID":3227312896, + "StationName":"Evans Horizons", + "StationType":"Coriolis" +} +``` + +### Augmentations +#### horizons and odyssey flags +Please read [horizons and odyssey flags](../docs/Developers.md#horizons-and-odyssey-flags) +in the Developers' documentation. + +#### gameversion and gamebuild +You **MUST** always set these as per [the relevant section](../docs/Developers.md#gameversions-and-gamebuild) +of the Developers' documentation. diff --git a/schemas/dockinggranted-v1.0.json b/schemas/dockinggranted-v1.0.json new file mode 100644 index 0000000..de70584 --- /dev/null +++ b/schemas/dockinggranted-v1.0.json @@ -0,0 +1,82 @@ +{ + "$schema" : "http://json-schema.org/draft-04/schema#", + "id" : "https://eddn.edcd.io/schemas/dockinggranted/1#", + "type" : "object", + "additionalProperties" : false, + "required": [ "$schemaRef", "header", "message" ], + "properties": { + "$schemaRef": { + "type" : "string" + }, + "header": { + "type" : "object", + "additionalProperties" : true, + "required" : [ "uploaderID", "softwareName", "softwareVersion" ], + "properties" : { + "uploaderID": { + "type" : "string" + }, + "gameversion": { + "type" : "string", + "description" : "From Fileheader event if available, else LoadGame if available there." + }, + "gamebuild": { + "type" : "string", + "description" : "The `build` value from a Fileheader event if available, else LoadGame if available there." + }, + "softwareName": { + "type" : "string" + }, + "softwareVersion": { + "type" : "string" + }, + "gatewayTimestamp": { + "type" : "string", + "format" : "date-time", + "description" : "Timestamp upon receipt at the gateway. If present, this property will be overwritten by the gateway; submitters are not intended to populate this property." + } + } + }, + "message": { + "type" : "object", + "description" : "Contains all properties from the listed events in the client's journal minus the Localised strings and the properties marked below as 'disallowed'", + "additionalProperties" : false, + "required" : [ "timestamp", "event", "MarketID", "StationName" ], + "properties" : { + "timestamp": { + "type" : "string", + "format" : "date-time" + }, + "event" : { + "enum" : [ "DockingGranted" ] + }, + "horizons": { + "type" : "boolean", + "description" : "Whether the sending Cmdr has a Horizons pass." + }, + "odyssey": { + "type" : "boolean", + "description" : "Whether the sending Cmdr has an Odyssey expansion." + }, + "MarketID": { + "type" : "integer" + }, + "StationName": { + "type" : "string", + "description" : "Name of station" + }, + "StationType": { + "type" : "string", + "description" : "Type of station" + }, + "LandingPad": { + "type" : "integer", + "description" : "Pad number Cmdr was granted landing to" + } + } + } + }, + "definitions": { + "disallowed" : { "not" : { "type": [ "array", "boolean", "integer", "number", "null", "object", "string" ] } } + } +} diff --git a/schemas/fssbodysignals-README.md b/schemas/fssbodysignals-README.md index 7582514..422355b 100644 --- a/schemas/fssbodysignals-README.md +++ b/schemas/fssbodysignals-README.md @@ -1,4 +1,4 @@ -# EDDN FSSAllBodiesFound Schema +# EDDN FSSBodySignals Schema ## Introduction Here we document how to take data from an ED `FSSBodySignals` Journal diff --git a/schemas/fsssignaldiscovered-v1.0.json b/schemas/fsssignaldiscovered-v1.0.json index 3f7b171..b28df5c 100644 --- a/schemas/fsssignaldiscovered-v1.0.json +++ b/schemas/fsssignaldiscovered-v1.0.json @@ -69,6 +69,7 @@ "minItems": 1, "items": { "type": "object", + "additionalProperties" : false, "required": ["timestamp", "SignalName"], "description": "Single FSSSignalDiscovered event", "properties": { @@ -77,6 +78,7 @@ "format" : "date-time" }, "SignalName": { "type": "string" }, + "SignalType": { "type": "string" }, "IsStation": { "type": "boolean" }, "USSType": { "type": "string", @@ -87,6 +89,8 @@ "TimeRemaining": {"$ref" : "#/definitions/disallowed"}, "SpawningState": {"type": "string"}, "SpawningFaction" : {"type": "string"}, + "SpawningPower" : {"type": "string"}, + "OpposingPower" : {"type": "string"}, "ThreatLevel": {"type": "integer" }, "patternProperties": { diff --git a/src/eddn/Relay.py b/src/eddn/Relay.py index 4fbd990..d5fd567 100644 --- a/src/eddn/Relay.py +++ b/src/eddn/Relay.py @@ -79,7 +79,7 @@ def stats(): class Relay(Thread): - REGENERATE_UPLOADER_NONCE_INTERVAL = 12 * 60 * 60 # 12 hrs + REGENERATE_UPLOADER_NONCE_INTERVAL = 3 * 60 # 3 minutes, was 12 hrs def __init__(self, **kwargs): super(Relay, self).__init__(**kwargs) diff --git a/src/eddn/conf/Settings.py b/src/eddn/conf/Settings.py index 9e2f6a5..52730a6 100644 --- a/src/eddn/conf/Settings.py +++ b/src/eddn/conf/Settings.py @@ -27,7 +27,7 @@ class _Settings(object): RELAY_SENDER_BINDINGS = ["tcp://*:9500"] # If set to False, no deduplicate is made - RELAY_DUPLICATE_MAX_MINUTES = 15 + RELAY_DUPLICATE_MAX_MINUTES = False # If set to false, don't listen to topic and accept all incoming messages RELAY_RECEIVE_ONLY_GATEWAY_EXTRA_JSON = True @@ -90,6 +90,11 @@ class _Settings(object): "https://eddn.edcd.io/schemas/fcmaterials_capi/1" : "schemas/fcmaterials_capi-v1.0.json", "https://eddn.edcd.io/schemas/fcmaterials_capi/1/test" : "schemas/fcmaterials_capi-v1.0.json", + + "https://eddn.edcd.io/schemas/dockinggranted/1" : "schemas/dockinggranted-v1.0.json", + "https://eddn.edcd.io/schemas/dockinggranted/1/test" : "schemas/dockinggranted-v1.0.json", + "https://eddn.edcd.io/schemas/dockingdenied/1" : "schemas/dockingdenied-v1.0.json", + "https://eddn.edcd.io/schemas/dockingdenied/1/test" : "schemas/dockingdenied-v1.0.json", } GATEWAY_OUTDATED_SCHEMAS = [