{"id":18746700,"url":"https://github.com/matrixeditor/upnp-terminal","last_synced_at":"2025-06-27T03:34:22.239Z","repository":{"id":270149858,"uuid":"729814839","full_name":"MatrixEditor/upnp-terminal","owner":"MatrixEditor","description":"Working with UPnP and its protocols.","archived":false,"fork":false,"pushed_at":"2023-12-10T12:55:16.000Z","size":50,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-12-28T20:46:01.012Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MatrixEditor.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-12-10T12:54:22.000Z","updated_at":"2023-12-10T12:55:48.000Z","dependencies_parsed_at":"2024-12-28T20:46:02.381Z","dependency_job_id":"0c3bc99a-5943-4f29-8b9a-c98fe98145b9","html_url":"https://github.com/MatrixEditor/upnp-terminal","commit_stats":null,"previous_names":["matrixeditor/upnp-terminal"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MatrixEditor%2Fupnp-terminal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MatrixEditor%2Fupnp-terminal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MatrixEditor%2Fupnp-terminal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MatrixEditor%2Fupnp-terminal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MatrixEditor","download_url":"https://codeload.github.com/MatrixEditor/upnp-terminal/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239629298,"owners_count":19671258,"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-11-07T16:26:33.911Z","updated_at":"2025-02-19T09:26:06.563Z","avatar_url":"https://github.com/MatrixEditor.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# UPnP-terminal\n\nTo use this code you have to install python `requests` and download this repository. With 'py upnpTerminal.py' you can start the program. \nThere are different options how to start the program. With `--info` additional information about the project are displayed and `--empty`\nwill start the program in manual mode in the future.\n\nAfter the database is initialized with the received data from the network, an interpreter is started. You will start in the `system`\n-context. Enter the name of the context you want to switch to and `exit` to get back to the default one. The usage\ncan be seen with `help` in each context.\n\nThere are three contexts implemented:\n\n### msearch \n\n---\n\nThe MSearchContext (name: `msearch`) is used to analyze the received packets during the collection process. The following commands are implemented:\n    \n    \u003e hosts [--save PATH]\n\n    save              writes all collected hosts to the specified path\n                      (format=XXX will be added in the future)\n\n### devices\n\n---\n\nThe DeviceContext (name: `devices`) is used to get detailed information about collected devices, services and service-descriptions. The \ncommands are the following ones:\n    \n    \u003e device [--host HOST] [--name NAME]\n\n    host               the host-address is used to get all devices\n                       from that address.\n    name               searches for devices wth the given name. If both\n                       options are set only 'host' is used\n    all                prints all information about stored services\n                        \n\n    \u003e service [--name NAME]\n\n    name              only services with the given name will be printed. \n\n                          \n    \u003e scpd [--host HOST_ADDRESS] [--name NAME] [--code PATH] \n\n    host              prints all service-presentation-descriptions linked \n                      to the host\n    name              only services with the given name are printed. It \n                      is recommended to use both options in order to get \n                      less output (it will be huge).\n    code              creates a pseudocode document with all actions and\n                      variables\n\nAn axample of code generated by this script can be seen in the file `\"example-code.txt\".` Type definitions are written as follows:\n\n    //standard type\n    define [eventing] type_name as type_reference\n\n    //type with a default value\n    with values (\n        default value1\n    ) define [eventing] type_name as type_reference\n\n    //type with allowed values\n    with values (\n        value1\n        value2\n        ...\n    ) define [eventing] type_name as type_reference\n\nand methods like this:\n\n    //void method\n    [optional] void def method_name(method_parameters);\n\n    //method with return value\n    [optional] def method_name(method_parameters):\n    type_reference \"var + type_name\" = __sub__0Gettype_name(...)\n    ...\n\n    return \"var + type_name\", ...\n\n### control\n\n---\n\nThe ControlContext is used to execute commands on UPnP-Devices. To get a\nfeeling of the structure of the declared functions just use the 'code'\noption on 'scpd' in the DeviceContext. This generates a file with pseudocode\nwith all global type-definitions and declared methods.\n    \nThe 'exe' command uses the method-name as an identifier to collect all other \ndetails like 'serviceType' or 'controlURL'. If some arguments are required\nthe parameter-name is the same as defined in the pseudocode. \n\nLet's consider the following example: \n        \n    string A_ARG_TYPE_InstanceID\n\nIf an argument of the example type is required, the following structure should\nbe used:\n\n    --argv InstanceID:someString\n  \nThe following commands are implemented:\n    \n    \u003e exe --method METHOD [--argv ParamName:Value[,ParamName:Value[,...]]]\n\n    method            specifies the method name\n    argv              if arguments are required, this option has to be used.\n                      the structure is described above\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatrixeditor%2Fupnp-terminal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatrixeditor%2Fupnp-terminal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatrixeditor%2Fupnp-terminal/lists"}