├── .coveragerc
├── .editorconfig
├── .github
└── workflows
│ ├── deploy-docs.yml
│ ├── deploy-wheels.yml
│ ├── main.yml
│ └── test-management.yml
├── .gitignore
├── .pylintrc
├── CONTRIBUTING.md
├── DEVELOPERS.md
├── LICENSE
├── LICENSES-OSS
├── MANIFEST.in
├── Makefile
├── README.rst
├── cloc.def
├── crossbar.ico
├── crossbar.json
├── crossbar
├── LICENSE
├── LICENSES-OSS
├── __init__.py
├── _compat.py
├── _log_categories.py
├── _logging.py
├── _util.py
├── _version.py
├── bridge
│ ├── __init__.py
│ ├── mqtt
│ │ ├── __init__.py
│ │ ├── _events.py
│ │ ├── _utils.py
│ │ ├── protocol.py
│ │ ├── test
│ │ │ ├── __init__.py
│ │ │ ├── certs
│ │ │ │ ├── ca.cert.pem
│ │ │ │ ├── client.crt
│ │ │ │ ├── client.key
│ │ │ │ ├── client_1.crt
│ │ │ │ ├── client_1.key
│ │ │ │ ├── dhparam
│ │ │ │ ├── intermediate.cert.pem
│ │ │ │ ├── server.crt
│ │ │ │ └── server.key
│ │ │ ├── interop.py
│ │ │ ├── interop_tests.py
│ │ │ ├── test_events.py
│ │ │ ├── test_protocol.py
│ │ │ ├── test_topic.py
│ │ │ ├── test_tx.py
│ │ │ └── test_wamp.py
│ │ ├── tx.py
│ │ └── wamp.py
│ └── rest
│ │ ├── __init__.py
│ │ ├── callee.py
│ │ ├── caller.py
│ │ ├── common.py
│ │ ├── publisher.py
│ │ ├── subscriber.py
│ │ ├── test
│ │ ├── __init__.py
│ │ ├── _request.py
│ │ ├── test_callee.py
│ │ ├── test_caller.py
│ │ ├── test_common.py
│ │ ├── test_publisher.py
│ │ ├── test_signature.py
│ │ ├── test_subscriber.py
│ │ └── test_webhook.py
│ │ └── webhook.py
├── common
│ ├── __init__.py
│ ├── checkconfig.py
│ ├── fswatcher.py
│ ├── key.py
│ ├── keys
│ │ ├── crossbar-16-10.pub
│ │ ├── crossbar-17-1.pub
│ │ ├── crossbar-17-10.pub
│ │ ├── crossbar-17-11.pub
│ │ ├── crossbar-17-12.pub
│ │ ├── crossbar-17-2.pub
│ │ ├── crossbar-17-3.pub
│ │ ├── crossbar-17-4.pub
│ │ ├── crossbar-17-5.pub
│ │ ├── crossbar-17-6.pub
│ │ ├── crossbar-17-8.pub
│ │ ├── crossbar-17-9.pub
│ │ ├── crossbar-18-10.pub
│ │ ├── crossbar-18-11.pub
│ │ ├── crossbar-18-12.pub
│ │ ├── crossbar-18-3.pub
│ │ ├── crossbar-18-4.pub
│ │ ├── crossbar-18-5.pub
│ │ ├── crossbar-18-6.pub
│ │ ├── crossbar-18-7.pub
│ │ ├── crossbar-18-8.pub
│ │ ├── crossbar-18-9.pub
│ │ ├── crossbar-19-1.pub
│ │ ├── crossbar-19-10.pub
│ │ ├── crossbar-19-11.pub
│ │ ├── crossbar-19-2.pub
│ │ ├── crossbar-19-3.pub
│ │ ├── crossbar-19-4.pub
│ │ ├── crossbar-19-5.pub
│ │ ├── crossbar-19-6.pub
│ │ ├── crossbar-19-7.pub
│ │ ├── crossbar-19-9.pub
│ │ ├── crossbar-20-1.pub
│ │ ├── crossbar-20-12.pub
│ │ ├── crossbar-20-2.pub
│ │ ├── crossbar-20-4.pub
│ │ ├── crossbar-20-5.pub
│ │ ├── crossbar-20-6.pub
│ │ ├── crossbar-20-7.pub
│ │ ├── crossbar-20-8.pub
│ │ ├── crossbar-21-1.pub
│ │ ├── crossbar-21-11.pub
│ │ ├── crossbar-21-2.pub
│ │ ├── crossbar-21-3.pub
│ │ ├── crossbar-21-4.pub
│ │ ├── crossbar-21-6.pub
│ │ ├── crossbar-22-1.pub
│ │ ├── crossbar-22-2.pub
│ │ ├── crossbar-22-3.pub
│ │ ├── crossbar-22-4.pub
│ │ ├── crossbar-22-5.pub
│ │ ├── crossbar-22-6.pub
│ │ ├── crossbar-22-7.pub
│ │ └── crossbar-23-1.pub
│ ├── monitor.py
│ ├── process.py
│ ├── processinfo.py
│ ├── profiler.py
│ ├── reloader.py
│ └── twisted
│ │ ├── __init__.py
│ │ ├── endpoint.py
│ │ ├── processutil.py
│ │ ├── sharedport.py
│ │ ├── test
│ │ ├── __init__.py
│ │ ├── multipart.py
│ │ ├── test_endpoint.py
│ │ └── test_resource.py
│ │ ├── tlsctx.py
│ │ └── web.py
├── edge
│ ├── __init__.py
│ ├── node
│ │ ├── __init__.py
│ │ ├── config
│ │ │ ├── bare.json
│ │ │ ├── default.json
│ │ │ └── pairme.json
│ │ ├── docker.py
│ │ ├── management.py
│ │ ├── node.py
│ │ └── tests
│ │ │ ├── __init__.py
│ │ │ ├── dockerinspect.py
│ │ │ └── test_docker.py
│ ├── personality.py
│ ├── webservice
│ │ ├── __init__.py
│ │ ├── pairme.py
│ │ └── templates
│ │ │ ├── base.html
│ │ │ └── pairme.html
│ └── worker
│ │ ├── __init__.py
│ │ ├── auth.py
│ │ ├── hostmonitor.py
│ │ ├── monitor
│ │ ├── __init__.py
│ │ ├── _base.py
│ │ ├── _cpu.py
│ │ ├── _disk.py
│ │ ├── _hardware.py
│ │ ├── _memory.py
│ │ ├── _network.py
│ │ ├── _process.py
│ │ ├── _self.py
│ │ ├── _storage.py
│ │ └── _system.py
│ │ ├── postgresql.py
│ │ ├── realmstore.py
│ │ ├── router.py
│ │ ├── tracing.py
│ │ ├── xbr
│ │ ├── __init__.py
│ │ ├── _authenticator.py
│ │ ├── _marketmaker.py
│ │ └── _util.py
│ │ └── xbrmm.py
├── functest_helpers
│ ├── __init__.py
│ ├── auth.py
│ └── shutdown_test.py
├── interfaces.py
├── master
│ ├── __init__.py
│ ├── api
│ │ ├── __init__.py
│ │ ├── container.py
│ │ ├── docker.py
│ │ ├── nativeprocess.py
│ │ ├── node.py
│ │ ├── proxy.py
│ │ ├── remote.py
│ │ ├── router.py
│ │ ├── tracing.py
│ │ ├── wamp.py
│ │ └── worker.py
│ ├── arealm
│ │ ├── __init__.py
│ │ └── arealm.py
│ ├── cluster
│ │ ├── __init__.py
│ │ ├── routercluster.py
│ │ └── webcluster.py
│ ├── mrealm
│ │ ├── __init__.py
│ │ ├── controller.py
│ │ ├── liveview.py
│ │ ├── metadata.py
│ │ └── mrealm.py
│ ├── node
│ │ ├── __init__.py
│ │ ├── authenticator.py
│ │ ├── config.json
│ │ ├── controller.py
│ │ ├── messenger.py
│ │ ├── node.ini
│ │ ├── node.py
│ │ ├── roles.py
│ │ └── user.py
│ ├── personality.py
│ ├── webservice
│ │ ├── __init__.py
│ │ ├── registerme.py
│ │ └── templates
│ │ │ ├── cfc_debug_resource.html
│ │ │ ├── registerme.html
│ │ │ ├── xbr-api-hub-logo.png
│ │ │ └── xbr-idl-logo.png
│ └── xbr
│ │ ├── __init__.py
│ │ └── _marketplace.py
├── network
│ ├── __init__.py
│ ├── _api.py
│ ├── _authenticator.py
│ ├── _backend.py
│ ├── _error.py
│ ├── _mailgw.py
│ ├── _util.py
│ ├── _web.py
│ ├── node
│ │ ├── __init__.py
│ │ ├── config.json
│ │ └── node.py
│ ├── personality.py
│ └── test
│ │ ├── config1.py
│ │ ├── init_blockchain.py
│ │ ├── test_api01_echo.py
│ │ ├── test_api02_onboard.py
│ │ ├── test_api03_login.py
│ │ ├── test_api03_logout.py
│ │ ├── test_api04_member.py
│ │ ├── test_api05_market.py
│ │ ├── test_api06_market.py
│ │ ├── test_api07_market.py
│ │ ├── test_api08_catalog.py
│ │ ├── test_api09_catalog.py
│ │ ├── test_api10_api.py
│ │ └── test_connect.py
├── newsfragments
│ ├── .gitignore
│ ├── 1531.enhancement
│ ├── 1607.feature
│ └── 208.bugfix
├── node
│ ├── __init__.py
│ ├── controller.py
│ ├── guest.py
│ ├── main.py
│ ├── native.py
│ ├── node.py
│ ├── template.py
│ ├── templates
│ │ ├── README.md
│ │ └── default
│ │ │ ├── .crossbar
│ │ │ └── config.json
│ │ │ ├── README.md
│ │ │ └── web
│ │ │ └── README.md
│ ├── test
│ │ ├── __init__.py
│ │ ├── test_cleanup.py
│ │ ├── test_cli.py
│ │ └── test_run.py
│ └── worker.py
├── personality.py
├── quickstart
│ ├── __init__.py
│ ├── main.py
│ └── quickstartvenv.py
├── router
│ ├── __init__.py
│ ├── auth
│ │ ├── __init__.py
│ │ ├── anonymous.py
│ │ ├── cryptosign.py
│ │ ├── pending.py
│ │ ├── scram.py
│ │ ├── ticket.py
│ │ ├── tls.py
│ │ └── wampcra.py
│ ├── broker.py
│ ├── cookiestore.py
│ ├── dealer.py
│ ├── inventory.py
│ ├── longpoll.py
│ ├── observation.py
│ ├── protocol.py
│ ├── realmstore.py
│ ├── role.py
│ ├── router.py
│ ├── service.py
│ ├── session.py
│ ├── test
│ │ ├── __init__.py
│ │ ├── helpers.py
│ │ ├── test_authorize.py
│ │ ├── test_broker.py
│ │ ├── test_cookiestore.py
│ │ ├── test_dealer.py
│ │ ├── test_metering.py
│ │ ├── test_observation.py
│ │ ├── test_pytrie.py
│ │ ├── test_router.py
│ │ ├── test_testament.py
│ │ ├── test_unisocket.py
│ │ └── test_wildcard.py
│ ├── unisocket.py
│ └── wildcard.py
├── shell
│ ├── __init__.py
│ ├── app.py
│ ├── client.py
│ ├── command.py
│ ├── config.py
│ ├── idl
│ │ ├── __init__.py
│ │ ├── generator.py
│ │ ├── loader.py
│ │ ├── reflection.bfbs
│ │ ├── reflection.fbs
│ │ └── reflection.json
│ ├── main.py
│ ├── monitor.py
│ ├── reflection
│ │ ├── BaseType.py
│ │ ├── Enum.py
│ │ ├── EnumVal.py
│ │ ├── Field.py
│ │ ├── KeyValue.py
│ │ ├── Object.py
│ │ ├── RPCCall.py
│ │ ├── Schema.py
│ │ ├── Service.py
│ │ ├── Type.py
│ │ └── __init__.py
│ ├── repl.py
│ ├── tests
│ │ └── test_shell_util.py
│ └── util.py
├── test
│ ├── __init__.py
│ ├── test_checkconfig.py
│ ├── test_compat.py
│ ├── test_config.json
│ ├── test_config1.json
│ ├── test_config1_merged.json
│ ├── test_config2.json
│ ├── test_config2_merged.json
│ ├── test_config3.json
│ ├── test_config3_merged.json
│ ├── test_logger.py
│ └── test_util.py
├── webservice
│ ├── __init__.py
│ ├── archive.py
│ ├── base.py
│ ├── catalog.py
│ ├── flashpolicy.py
│ ├── longpoll.py
│ ├── misc.py
│ ├── rest.py
│ ├── static.py
│ ├── templates
│ │ ├── cb_base.html
│ │ ├── cb_lp_notice.html
│ │ ├── cb_node_info.html
│ │ ├── cb_schema_overview.html
│ │ ├── cb_web_404.html
│ │ ├── cb_ws_status.html
│ │ ├── cb_ws_testee_status.html
│ │ ├── wamp_catalog_base.html
│ │ ├── wamp_catalog_enum.html
│ │ ├── wamp_catalog_home.html
│ │ ├── wamp_catalog_service.html
│ │ ├── wamp_catalog_struct.html
│ │ └── wamp_catalog_table.html
│ ├── test
│ │ ├── __init__.py
│ │ ├── templates
│ │ │ ├── greeting.html
│ │ │ └── product_report.html
│ │ └── test_wap.py
│ ├── wap.py
│ ├── websocket.py
│ └── wsgi.py
└── worker
│ ├── __init__.py
│ ├── container.py
│ ├── controller.py
│ ├── main.py
│ ├── proxy.py
│ ├── rlink.py
│ ├── router.py
│ ├── sample
│ ├── __init__.py
│ └── _logging.py
│ ├── test
│ ├── __init__.py
│ ├── examples
│ │ ├── __init__.py
│ │ ├── badclass.py
│ │ ├── goodclass.py
│ │ ├── importerror.py
│ │ └── syntaxerror.py
│ ├── test_loader.py
│ └── test_router.py
│ ├── testee.py
│ ├── transport.py
│ └── types.py
├── deploy-docs.sh
├── deploy-wheels.sh
├── docker-compose.yml
├── docs-cfx
├── DEVELOPERS.md
├── Documentation-License.rst
├── Makefile
├── _static
│ ├── autobahn_logo_blue.svg
│ ├── cb-internal-architecture.odg
│ ├── cb-internal-architecture.pdf
│ ├── cf-scaleout-arch-diagram.pdf
│ ├── cf-scaleout-arch-diagram.png
│ ├── cf-scaleout-arch-diagram.svg
│ ├── cf-scaleout-arch.odg
│ ├── cf-scaleout-arch.pdf
│ ├── cfc-oem-overview.odg
│ ├── cfc-oem-overview.pdf
│ ├── cfc-system-architecture.odg
│ ├── cfc-system-architecture.pdf
│ ├── cfc_database.png
│ ├── cfx-clustering-elements.odg
│ ├── cfx-clustering-elements.pdf
│ ├── cfx-clustering-elements.svg
│ ├── cfx_environment_variables.ods
│ ├── cfxdb_database_schema.ods
│ ├── cfxdb_database_schema.pdf
│ ├── crossbar-api-namespaces.ods
│ ├── crossbar-api-namespaces.pdf
│ ├── crossbar-rlinks.odg
│ ├── crossbar-rlinks.pdf
│ ├── crossbar.png
│ ├── crossbar.svg
│ ├── crossbarfx-aggregator.odg
│ ├── crossbarfx-aggregator.pdf
│ ├── crossbarfx-central-control-plane.odg
│ ├── crossbarfx-central-control-plane.pdf
│ ├── crossbarfx-central-control-plane.svg
│ ├── crossbarfx-install-from-wheels.sh
│ ├── crossbarfx-network-architecture-2.odg
│ ├── crossbarfx-network-architecture-2.pdf
│ ├── crossbarfx-network-architecture.odg
│ ├── crossbarfx-network-architecture.pdf
│ ├── crossbarfx-network-architecture.svg
│ ├── crossbarfx-xbr-layers.odg
│ ├── crossbarfx-xbr-layers.pdf
│ ├── crossbarfx.png
│ ├── crossbarfx.svg
│ ├── crossbarfx_black.png
│ ├── crossbarfx_black.svg
│ ├── custom.css
│ ├── onboarding
│ │ ├── 1.png
│ │ ├── 2.png
│ │ ├── 3.png
│ │ ├── 4.png
│ │ ├── 5.png
│ │ ├── 6.png
│ │ └── 7.png
│ ├── router-worker-vmprof1.odg
│ ├── router-worker-vmprof1.pdf
│ ├── screenshots
│ │ ├── accessing_crossbar_wamp_event_history_from_jupyter.png
│ │ ├── aggregating_crossbar_wamp_event_history_in_jupyter_on_cpython.png
│ │ ├── aggregating_crossbar_wamp_event_history_in_jupyter_on_pypy.png
│ │ ├── aggregating_crossbar_wamp_event_history_in_jupyter_on_pypy_2.png
│ │ ├── benchmark_rpc_roundtrip_analyze_clients.png
│ │ ├── benchmark_rpc_roundtrip_analyze_transports.png
│ │ ├── benchmark_rpc_roundtrip_brummer1_load.png
│ │ ├── benchmark_rpc_roundtrip_router_vmprof.png
│ │ ├── benchmark_rpc_roundtrip_run.png
│ │ ├── cfx-process-structure-1.png
│ │ ├── cfx-process-structure-2.png
│ │ ├── cfx-shell-monitor-1.png
│ │ ├── cfx-webcluster-haproxy.png
│ │ ├── crossbar_on_snapcraft.png
│ │ ├── crossbar_pypy_on_snapcraft.png
│ │ ├── crossbar_wamp_calls_between_jupyter_notebooks.png
│ │ ├── crossbarfx_on_dockerhub.png
│ │ ├── crossbarfx_on_dockerhub_tags.png
│ │ ├── crossbarfx_workbench_on_dockerhub.png
│ │ ├── jupyter_setup1.png
│ │ ├── jupyter_setup2.png
│ │ ├── tree-routing-from-node1.png
│ │ ├── tree-routing-from-node2.png
│ │ ├── tree-routing-from-node3.png
│ │ ├── tree-routing-from-node4.png
│ │ └── tree-routing-from-node5.png
│ ├── webscaling_bigbox_results.png
│ ├── xbr-hardware-identity.odg
│ └── xbr-hardware-identity.pdf
├── benchmarks.rst
├── conf.py
├── contents.rst
├── dataplane
│ ├── analytics-architectures.rst
│ ├── eventsdb
│ │ ├── analysis.rst
│ │ ├── index.rst
│ │ └── overview.rst
│ ├── index.rst
│ └── zlmdb
│ │ ├── backup.rst
│ │ ├── export.rst
│ │ ├── fileformat.rst
│ │ ├── index.rst
│ │ └── storage.rst
├── docker-compose.yml
├── gettingstarted
│ ├── envvars.rst
│ ├── index.rst
│ ├── intro.rst
│ ├── using_aws.rst
│ ├── using_docker.rst
│ ├── using_exe.rst
│ └── using_snaps.rst
├── index.rst
├── legal
│ ├── api_licenses.rst
│ ├── index.rst
│ ├── oss_licenses.rst
│ └── oss_licenses_table.rst
├── management
│ ├── domain
│ │ ├── domain-api.rst
│ │ └── domain-config.rst
│ ├── index.rst
│ ├── introduction.rst
│ ├── mrealm-api
│ │ ├── arealms.rst
│ │ ├── index.rst
│ │ ├── routerclusters.rst
│ │ └── webclusters.rst
│ ├── remote-node-api.rst
│ └── zlmdb.rst
├── readthedocs-environment.yml
├── scaling
│ ├── arealms.rst
│ ├── examples.rst
│ ├── index.rst
│ ├── introduction.rst
│ ├── routerclusters.rst
│ └── webclusters.rst
├── security_hardening.rst
├── spelling_wordlist.txt
├── work
│ ├── architecture.rst
│ ├── building_from_sources.rst
│ ├── kubernetes.rst
│ ├── kubernetes
│ │ ├── Makefile
│ │ ├── docker-edge
│ │ │ ├── .crossbar
│ │ │ │ └── config.json
│ │ │ ├── Dockerfile
│ │ │ └── web
│ │ │ │ ├── README.md
│ │ │ │ ├── index.html
│ │ │ │ └── js
│ │ │ │ ├── autobahn.js
│ │ │ │ ├── keystore.js
│ │ │ │ └── main.js
│ │ ├── docker-master
│ │ │ └── Dockerfile
│ │ ├── edge
│ │ │ ├── Chart.yaml
│ │ │ ├── templates
│ │ │ │ ├── NOTES.txt
│ │ │ │ ├── _helpers.tpl
│ │ │ │ ├── deployment.yaml
│ │ │ │ ├── ingress.yaml
│ │ │ │ └── service.yaml
│ │ │ └── values.yaml
│ │ ├── index.rst
│ │ ├── index.yaml
│ │ ├── master
│ │ │ ├── .helmignore
│ │ │ ├── Chart.yaml
│ │ │ ├── scripts
│ │ │ │ └── etcd.yaml
│ │ │ ├── templates
│ │ │ │ ├── NOTES.txt
│ │ │ │ ├── _helpers.tpl
│ │ │ │ ├── deployment.yaml
│ │ │ │ ├── ingress.yaml
│ │ │ │ └── service.yaml
│ │ │ └── values.yaml
│ │ └── yaml
│ │ │ └── etcd.yaml
│ ├── mesh_links.rst
│ ├── message_tracing.rst
│ ├── numpy.rst
│ ├── quickstart.rst
│ └── xbr
│ │ ├── business.rst
│ │ ├── index.rst
│ │ ├── interfaces.rst
│ │ ├── interfaces2.rst
│ │ ├── introduction.rst
│ │ ├── metadata.rst
│ │ ├── roles.rst
│ │ ├── services.rst
│ │ ├── xbr_data_token_flow.asciio
│ │ ├── xbr_data_token_flow.txt
│ │ ├── xbr_on_chain_transactions.asciio
│ │ └── xbr_on_chain_transactions.txt
└── xbr
│ ├── admin-guide.rst
│ ├── api-reference.rst
│ ├── index.rst
│ ├── network-onboarding.rst
│ ├── network-reference.rst
│ └── programming-guide.rst
├── docs-old
├── README.md
├── _archive
│ ├── Installation-on-CentOS-RedHat.md
│ ├── Installation-on-Docker.md
│ ├── Installation-on-FreeBSD.md
│ ├── Installation-on-RaspberryPi.md
│ ├── Installation-on-Ubuntu-Debian.md
│ ├── Installation-on-Ubuntu-Snappy.md
│ ├── Quick-Reference.md
│ ├── Setup-on-Microsoft-Azure.md
│ └── Using-Docker.md
├── markdown.py
├── pages
│ ├── ChangeLog.md
│ ├── Documentation.md
│ ├── Features.md
│ ├── Table-of-Contents.md
│ ├── about
│ │ ├── Basic-Concepts.md
│ │ ├── Compatibility-Policy.md
│ │ ├── Contributing-FAQ.md
│ │ ├── Crossbar-License.md
│ │ ├── Documentation-License.md
│ │ └── FAQ.md
│ ├── administration
│ │ ├── Administration.md
│ │ ├── Command-Line.md
│ │ ├── Logging.md
│ │ ├── Node-Configuration.md
│ │ ├── auth
│ │ │ ├── Anonymous-Authentication.md
│ │ │ ├── Authentication.md
│ │ │ ├── Authorization.md
│ │ │ ├── Challenge-Response-Authentication.md
│ │ │ ├── Cookie-Authentication.md
│ │ │ ├── Cryptosign-Authentication.md
│ │ │ ├── Dynamic-Authenticators.md
│ │ │ ├── SCRAM-Authentication.md
│ │ │ ├── TLS-Client-Certificate-Authentication.md
│ │ │ └── Ticket-Authentication.md
│ │ ├── http-bridge
│ │ │ ├── HTTP-Bridge-Callee.md
│ │ │ ├── HTTP-Bridge-Caller.md
│ │ │ ├── HTTP-Bridge-Publisher.md
│ │ │ ├── HTTP-Bridge-Subscriber.md
│ │ │ ├── HTTP-Bridge-Webhook.md
│ │ │ └── HTTP-Bridge.md
│ │ ├── mqtt-broker
│ │ │ └── MQTT-Broker.md
│ │ ├── production
│ │ │ ├── Automatic-Startup-and-Restart.md
│ │ │ ├── Browser-Support.md
│ │ │ ├── Cryptobox-Payload-Encryption.md
│ │ │ ├── Going-to-Production.md
│ │ │ ├── Network-Tuning.md
│ │ │ ├── Reverse-Proxies.md
│ │ │ ├── Running-on-privileged-ports.md
│ │ │ ├── SSL-TLS-Interception-Proxies.md
│ │ │ ├── Scaling-Crossbar.io.md
│ │ │ ├── Secure-WebSocket-and-HTTPS.md
│ │ │ ├── Security.md
│ │ │ ├── Stream-Testee.md
│ │ │ ├── TLS-Certificates.md
│ │ │ └── WebSocket-Compliance-Testing.md
│ │ ├── router
│ │ │ ├── Router-Components.md
│ │ │ ├── Router-Realms.md
│ │ │ ├── Router-Transports.md
│ │ │ └── transport
│ │ │ │ ├── Cookie-Tracking.md
│ │ │ │ ├── Flash-Policy-Transport.md
│ │ │ │ ├── RawSocket-Transport.md
│ │ │ │ ├── Transport-Endpoints.md
│ │ │ │ ├── Web-Transport-and-Services.md
│ │ │ │ ├── WebSocket-Compression.md
│ │ │ │ ├── WebSocket-Options.md
│ │ │ │ └── WebSocket-Transport.md
│ │ ├── web-service
│ │ │ ├── CGI-Script-Service.md
│ │ │ ├── File-Upload-Service.md
│ │ │ ├── JSON-Value-Service.md
│ │ │ ├── Long-Poll-Service.md
│ │ │ ├── Node-Info-Service.md
│ │ │ ├── Path-Service.md
│ │ │ ├── Resource-Service.md
│ │ │ ├── Reverse-Proxy-Service.md
│ │ │ ├── Reverse-WebSocket-Proxy-Service.md
│ │ │ ├── Static-Web-Service.md
│ │ │ ├── WSGI-Host-Service.md
│ │ │ ├── Web-Redirection-Service.md
│ │ │ ├── Web-Services.md
│ │ │ └── WebSocket-Service.md
│ │ └── worker
│ │ │ ├── Container-Configuration.md
│ │ │ ├── Controller-Configuration.md
│ │ │ ├── Guest-Configuration.md
│ │ │ ├── Native-Worker-Options.md
│ │ │ ├── Process-Environments.md
│ │ │ ├── Processes.md
│ │ │ └── Router-Configuration.md
│ ├── getting-started
│ │ ├── Getting-started-with-Browser.md
│ │ ├── Getting-started-with-CSharp.md
│ │ ├── Getting-started-with-Cplusplus.md
│ │ ├── Getting-started-with-Erlang.md
│ │ ├── Getting-started-with-Java.md
│ │ ├── Getting-started-with-NodeJS.md
│ │ ├── Getting-started-with-PHP.md
│ │ ├── Getting-started-with-Python.md
│ │ └── Getting-started.md
│ ├── installation
│ │ ├── Demo-Instance.md
│ │ ├── Installation-FAQ.md
│ │ ├── Installation-on-Linux.md
│ │ ├── Installation-on-Mac-OS-X.md
│ │ ├── Installation-on-Windows.md
│ │ ├── Installation.md
│ │ ├── Setup-on-Amazon-EC2.md
│ │ ├── Setup-on-Heroku.md
│ │ ├── Setup-on-OpenShift.md
│ │ └── Try-out-without-Installation.md
│ └── programming-guide
│ │ ├── Application-Scenarios.md
│ │ ├── Configuring-Crossbario-Logging.md
│ │ ├── Creating-Docker-Images.md
│ │ ├── Development-with-External-Devices.md
│ │ ├── End-to-End-Encryption.md
│ │ ├── Error-Handling.md
│ │ ├── Examples.md
│ │ ├── JavaScript-Frameworks-and-Libraries.md
│ │ ├── Logging-in-Crossbar.io.md
│ │ ├── Programming-Guide.md
│ │ ├── Programming.md
│ │ ├── Starting-and-Stopping-Crossbar.io.md
│ │ ├── WAMP-Features.md
│ │ ├── framework
│ │ ├── Adding-Real-Time-to-Django-Applications.md
│ │ ├── AngularJS-Application-Components.md
│ │ └── Database-Programming-with-PostgreSQL.md
│ │ ├── general
│ │ ├── Sample-Authentication-Flow.md
│ │ ├── Session-Metaevents-and-Procedures.md
│ │ └── URI-Format.md
│ │ ├── pubsub
│ │ ├── Basic-Subscriptions.md
│ │ ├── Event-History.md
│ │ ├── How-Subscriptions-Work.md
│ │ ├── Pattern-Based-Subscriptions.md
│ │ ├── PubSub.md
│ │ ├── Publisher-Exclusion.md
│ │ ├── Publisher-Identification.md
│ │ ├── Retained-Events.md
│ │ ├── Subscriber-Black-and-Whitelisting.md
│ │ └── Subscription-Meta-Events-and-Procedures.md
│ │ └── rpc
│ │ ├── Basic-Registrations.md
│ │ ├── Caller-Identification.md
│ │ ├── How-Registrations-Work.md
│ │ ├── Pattern-Based-Registrations.md
│ │ ├── Progressive-Call-Results.md
│ │ ├── RPC.md
│ │ ├── Registration-Meta-Events-and-Procedures.md
│ │ ├── Registration-Options.md
│ │ └── Shared-Registrations.md
├── static
│ ├── pygments.css
│ └── site.css
├── templates
│ ├── changelog_preamble.md
│ ├── index.html
│ ├── layout.html
│ └── page.html
└── test_server.py
├── docs
├── Adding-Real-Time-to-Django-Applications.rst
├── Administration.rst
├── AngularJS-Application-Components.rst
├── Anonymous-Authentication.rst
├── Application-Scenarios.rst
├── Authentication.rst
├── Authorization.rst
├── Automatic-Startup-and-Restart.rst
├── Basic-Concepts.rst
├── Basic-Registrations.rst
├── Basic-Subscriptions.rst
├── Browser-Support.rst
├── CGI-Script-Service.rst
├── Caller-Identification.rst
├── Challenge-Response-Authentication.rst
├── Command-Line.rst
├── Compatibility-Policy.rst
├── Configuring-Crossbario-Logging.rst
├── Container-Configuration.rst
├── Contributing-FAQ.rst
├── Controller-Configuration.rst
├── Cookie-Authentication.rst
├── Cookie-Tracking.rst
├── Creating-Docker-Images.rst
├── Crossbar-License.rst
├── Cryptobox-Payload-Encryption.rst
├── Cryptosign-Authentication.rst
├── Database-Programming-with-PostgreSQL.rst
├── Demo-Instance.rst
├── Development-with-External-Devices.rst
├── Documentation-License.rst
├── Dynamic-Authenticators.rst
├── End-to-End-Encryption.rst
├── Error-Handling.rst
├── Event-History.rst
├── Examples.rst
├── FAQ.rst
├── File-Upload-Service.rst
├── Flash-Policy-Transport.rst
├── Getting-Started.rst
├── Going-to-Production.rst
├── Guest-Configuration.rst
├── HTTP-Bridge-Callee.rst
├── HTTP-Bridge-Caller.rst
├── HTTP-Bridge-Publisher.rst
├── HTTP-Bridge-Subscriber.rst
├── HTTP-Bridge-Webhook.rst
├── HTTP-Bridge.rst
├── How-Registrations-Work.rst
├── How-Subscriptions-Work.rst
├── Installation-FAQ.rst
├── Installation-on-Linux.rst
├── Installation-on-Mac-OS-X.rst
├── Installation-on-Windows.rst
├── Installation.rst
├── JSON-Value-Service.rst
├── JavaScript-Frameworks-and-Libraries.rst
├── Logging-in-Crossbar.io.rst
├── Logging.rst
├── Long-Poll-Service.rst
├── MQTT-Broker.rst
├── Makefile
├── Native-Worker-Options.rst
├── Network-Tuning.rst
├── Node-Configuration-Example.rst
├── Node-Configuration.rst
├── Node-Info-Service.rst
├── Path-Service.rst
├── Pattern-Based-Registrations.rst
├── Pattern-Based-Subscriptions.rst
├── Process-Environments.rst
├── Processes.rst
├── Programming-Guide.rst
├── Programming.rst
├── Progressive-Call-Results.rst
├── Proxy-Workers.rst
├── PubSub.rst
├── Publisher-Exclusion.rst
├── Publisher-Identification.rst
├── RPC.rst
├── RawSocket-Transport.rst
├── Registration-Meta-Events-and-Procedures.rst
├── Registration-Options.rst
├── Resource-Service.rst
├── Retained-Events.rst
├── Reverse-Proxies.rst
├── Reverse-Proxy-Service.rst
├── Reverse-WebSocket-Proxy-Service.rst
├── Router-Components.rst
├── Router-Configuration.rst
├── Router-Realms.rst
├── Router-Transports.rst
├── Running-on-privileged-ports.rst
├── SCRAM-Authentication.rst
├── SSL-TLS-Interception-Proxies.rst
├── Sample-Authentication-Flow.rst
├── Scaling-Crossbar.io.rst
├── Secure-WebSocket-and-HTTPS.rst
├── Security.rst
├── Session-Metaevents-and-Procedures.rst
├── Session-Statistics.rst
├── Setup-on-Amazon-EC2.rst
├── Setup-on-Heroku.rst
├── Setup-on-OpenShift.rst
├── Shared-Registrations.rst
├── Starting-and-Stopping-Crossbar.io.rst
├── Starting-and-Stopping-Crossbar.rst
├── Static-Web-Service.rst
├── Stream-Testee.rst
├── Subscriber-Black-and-Whitelisting.rst
├── Subscription-Meta-Events-and-Procedures.rst
├── TLS-Certificates.rst
├── TLS-Client-Certificate-Authentication.rst
├── Table-of-Contents.rst
├── Ticket-Authentication.rst
├── Transport-Endpoints.rst
├── URI-Format.rst
├── WAMP-Features.rst
├── WSGI-Host-Service.rst
├── Web-Archive-Service.rst
├── Web-Redirection-Service.rst
├── Web-Services.rst
├── Web-Transport-and-Services.rst
├── WebSocket-Compliance-Testing.rst
├── WebSocket-Compression.rst
├── WebSocket-Options.rst
├── WebSocket-Service.rst
├── WebSocket-Transport.rst
├── _static
│ ├── .keep
│ ├── css
│ │ └── custom.css
│ ├── favicon.ico
│ └── img
│ │ └── crossbar.svg
├── administration-guide.rst
├── assets
│ ├── carousel_polyglot.svg
│ ├── crossbar-architecture.svg
│ ├── crossbar-works.png
│ ├── crossbar_icon_and_text_vectorized_yellow_icon.svg
│ ├── helloworld-browser.svg
│ ├── helloworld.svg
│ ├── helloworldmix.svg
│ ├── helloworldrpc.svg
│ ├── pubsub-backend-browser.png
│ ├── pubsub-frontend-browser.png
│ ├── pubsubmix.svg
│ └── router-internal.svg
├── basic-concept.rst
├── changelog.rst
├── code
│ ├── autobahn.min.js
│ ├── backend.html
│ ├── backend.js
│ ├── client_appsession_publish.py
│ ├── client_appsession_rpc_callee.py
│ ├── client_appsession_rpc_caller.py
│ ├── client_appsession_subscribe.py
│ ├── client_component_publish.py
│ ├── client_component_rpc_callee.py
│ ├── client_component_rpc_caller.py
│ ├── client_component_subscribe.py
│ ├── config.json
│ ├── frontend.html
│ ├── frontend.js
│ ├── output.txt
│ ├── rpc_callee.html
│ └── rpc_callee.js
├── concept-features.rst
├── conf.py
├── contents.rst.inc
├── crossbar-features.rst
├── developer-guide.rst
├── index.rst
├── integration-guide.rst
├── oss_licenses_table.rst
├── policy-licence-faq.rst
├── soss_licenses_table.rst
├── spelling_wordlist.txt
├── tutorials-recipe.rst
├── web_app_page.rst
└── web_archive.rst
├── find-uris.py
├── inject-build-id.py
├── legal
├── README.md
├── agplv3.png
├── contributors_cb_tech.md
├── contributors_tavendo.md
├── crossbar_icon.png
├── crossbar_icon_and_text_vectorized.png
├── crossbar_text_vectorized.png
├── entity_caa.pdf
├── individual_caa.pdf
├── management_api.md
└── wamp.png
├── mypy.ini
├── pyproject.toml
├── pytest.ini
├── requirements-dev.txt
├── requirements-latest.txt
├── requirements-min.txt
├── requirements-pinned.txt
├── requirements.txt
├── setup.cfg
├── setup.py
├── sitecustomize.py
├── test
├── Makefile
├── app1
│ ├── README.md
│ └── client.py
├── app2
│ ├── README.md
│ └── client.py
├── cf1
│ ├── .crossbar
│ │ ├── config-empty.json
│ │ ├── config.json
│ │ ├── key.priv
│ │ └── key.pub
│ └── client.py
├── cf2
│ ├── .crossbar
│ │ ├── config-empty.json
│ │ ├── config.json
│ │ ├── key.priv
│ │ └── key.pub
│ └── client.py
├── cf3
│ ├── .crossbar
│ │ ├── config-empty.json
│ │ ├── config.json
│ │ ├── key.priv
│ │ └── key.pub
│ └── client.py
├── cf4
│ ├── .crossbar
│ │ ├── config-empty.json
│ │ └── config.json
│ └── client.py
├── cfc
│ ├── .crossbar
│ │ ├── README.md
│ │ ├── ca.cert.pem
│ │ ├── config-tls.json
│ │ ├── config.ini
│ │ ├── config.json
│ │ ├── default.priv
│ │ ├── default.pub
│ │ ├── dhparam.pem
│ │ ├── intermediate.cert.pem
│ │ ├── key.priv
│ │ ├── key.pub
│ │ ├── server.crt
│ │ └── server.key
│ ├── README.md
│ ├── analyze_usage.ipynb
│ └── web
│ │ ├── index.html
│ │ └── js
│ │ ├── autobahn.js
│ │ ├── keystore.js
│ │ └── main.js
├── docker-compose.yml
├── docker-integration.md
├── full
│ ├── .crossbar
│ │ ├── ca.cert.pem
│ │ ├── client.crt
│ │ ├── client.key
│ │ ├── config-manhole.json
│ │ ├── config.json
│ │ ├── dhparam.pem
│ │ ├── intermediate.cert.pem
│ │ ├── key.priv
│ │ ├── key.pub
│ │ ├── server.crt
│ │ ├── server.key
│ │ ├── ssh_host_rsa_key
│ │ └── ssh_host_rsa_key.pub
│ ├── README.md
│ ├── backend.py
│ ├── myapp.py
│ ├── tick.sh
│ └── web
│ │ └── README.md
├── functests
│ ├── README.md
│ ├── __init__.py
│ ├── _work
│ │ ├── _test_cb_authentication.py
│ │ ├── _test_cb_component.py
│ │ ├── _test_cfc_master.py
│ │ └── test_cb_rest_caller.py
│ ├── cbtests
│ │ ├── __init__.py
│ │ ├── test_cb_apperrors.py
│ │ ├── test_cb_authenticator.py
│ │ ├── test_cb_connection.py
│ │ ├── test_cb_dynamic_auth.py
│ │ ├── test_cb_guest.py
│ │ ├── test_cb_management_container.py
│ │ ├── test_cb_management_transports.py
│ │ ├── test_cb_meta_api.py
│ │ ├── test_cb_proxy.py
│ │ ├── test_cb_pubsub.py
│ │ ├── test_cb_rlink.py
│ │ ├── test_cb_rlink_three.py
│ │ ├── test_cb_rpc.py
│ │ ├── test_cb_sessions.py
│ │ ├── test_cb_shutdown.py
│ │ ├── test_cb_sigint.py
│ │ ├── test_cb_ssl.py
│ │ ├── test_cb_zip_bomb.py
│ │ └── test_rlink_proxy_mesh.py
│ ├── cfctests
│ │ ├── __init__.py
│ │ ├── test_cfc_remote.py
│ │ ├── test_cfc_rlink_mesh.py
│ │ ├── test_cfc_rlinks.py
│ │ ├── test_cfc_shared.py
│ │ ├── test_cfc_users.py
│ │ └── test_cfc_webcluster.py
│ ├── components.py
│ ├── conftest.py
│ ├── helpers.py
│ ├── launcher.py
│ └── util.py
├── jupyter
│ ├── .jupyter
│ │ ├── jupyter_notebook_config.py
│ │ └── migrated
│ └── notebooks
│ │ ├── usage-logs.ipynb
│ │ └── usage-logs.py
├── management
│ ├── ex_cpu_affinity.py
│ ├── ex_docker.py
│ ├── ex_global_api.py
│ ├── ex_global_status.py
│ ├── ex_list_nodes.py
│ ├── ex_list_sessions.py
│ ├── ex_list_subs_regs.py
│ ├── ex_list_workers.py
│ ├── ex_monitor_sessions.py
│ ├── ex_process_stats.py
│ ├── ex_start_container.py
│ ├── ex_start_guest.py
│ ├── ex_start_proxy.py
│ ├── ex_start_router.py
│ ├── ex_start_web_services.py
│ ├── ex_status.py
│ ├── ex_tracing.py
│ ├── ex_tracing_actions.py
│ ├── ex_tracing_monitor.py
│ ├── ex_tracing_monitor_actions.py
│ ├── ex_tracing_monitor_by_action.py
│ ├── ex_webcluster.py
│ ├── ex_worker_log.py
│ ├── run.sh
│ └── tracing
│ │ ├── ex_manage_trace.py
│ │ └── ex_monitor_trace.py
├── run_crossbar.py
├── test_ab_examples.sh
├── test_automated
│ ├── .crossbar
│ │ └── config.ini
│ ├── .gitignore
│ ├── .test
│ │ ├── master
│ │ │ ├── key.priv
│ │ │ └── key.pub
│ │ └── nodes
│ │ │ ├── node1
│ │ │ ├── key.priv
│ │ │ └── key.pub
│ │ │ ├── node2
│ │ │ ├── key.priv
│ │ │ └── key.pub
│ │ │ ├── node3
│ │ │ ├── key.priv
│ │ │ └── key.pub
│ │ │ └── node4
│ │ │ ├── key.priv
│ │ │ └── key.pub
│ ├── Makefile
│ ├── README.md
│ ├── client.py
│ ├── docker-compose.yml
│ ├── haproxy.cfg
│ ├── test_ci.py
│ ├── test_docker.sh
│ ├── test_host1.sh
│ ├── test_host2.sh
│ ├── test_host3.sh
│ ├── test_prepare_host.sh
│ ├── test_setup1.sh
│ ├── test_setup2.sh
│ ├── test_setup3.sh
│ ├── test_status.sh
│ └── test_stop_host.sh
├── test_backend
│ ├── app1
│ │ └── client.py
│ ├── cf1
│ │ ├── .crossbar
│ │ │ └── config.json
│ │ └── backend.py
│ └── cf2
│ │ ├── .crossbar
│ │ └── config.json
│ │ └── backend.py
├── test_cli_0.sh
├── test_cli_1.sh
├── test_cli_2.sh
├── test_cli_3.sh
├── test_hostmon
│ └── .crossbar
│ │ └── config.json
├── test_imports.py
├── test_jupyter
│ ├── Dockerfile
│ └── Makefile
├── test_nodelog
│ ├── README.md
│ ├── test_nodelog.py
│ └── test_usage.py
├── test_pevents
│ ├── .gitignore
│ ├── Makefile
│ ├── README.md
│ ├── analyze.py
│ ├── crossbar
│ │ ├── .crossbar
│ │ │ └── config.json
│ │ ├── publisher.py
│ │ ├── subscriber.py
│ │ └── web
│ │ │ ├── README.md
│ │ │ └── index.html
│ ├── docker-compose.yml
│ └── jupyter
│ │ ├── .jupyter
│ │ └── jupyter_notebook_config.py
│ │ ├── Dockerfile.cpy
│ │ ├── Dockerfile.pypy
│ │ ├── notebooks
│ │ ├── .gitignore
│ │ ├── Untitled.ipynb
│ │ ├── Untitled1.py
│ │ ├── Untitled1.txt
│ │ ├── analyze_event_history.ipynb
│ │ ├── analyze_event_history.py
│ │ ├── analyze_event_history_2.ipynb
│ │ ├── analyze_event_history_2.py
│ │ ├── analyze_event_history_2.txt
│ │ ├── analyze_event_history_3.ipynb
│ │ ├── analyze_event_history_3.py
│ │ └── basic.ipynb
│ │ └── red-data-tools.list
├── test_setup.sh
├── test_xbr_market
│ └── .crossbar
│ │ └── config.json
├── test_xbr_marketmaker
│ ├── Makefile
│ ├── consumer
│ │ └── consumer.py
│ ├── crossbar
│ │ ├── .crossbar
│ │ │ └── config.json
│ │ └── web
│ │ │ ├── README.md
│ │ │ └── index.html
│ ├── docker-compose.yml
│ ├── ganache
│ │ └── README.md
│ ├── provider
│ │ └── provider.py
│ └── work
│ │ ├── contract.sol
│ │ ├── test.py
│ │ ├── test2.py
│ │ └── test3.py
└── test_xbr_network
│ ├── .crossbar
│ ├── config-edge.json
│ ├── config.json
│ └── xbrnetwork-eth.key
│ ├── env.sh
│ ├── set-xbrnetwork-ethkey.py
│ └── test_xbr_network.sh
├── tox.ini
├── versions.sh
└── yapf.ini
/.coveragerc:
--------------------------------------------------------------------------------
1 | [run]
2 | omit =
3 | crossbar/worker/test/examples/syntaxerror.py
4 | */test/*.py
5 | branch = True
6 | source = crossbar
7 | parallel = True
8 |
9 | [paths]
10 | source=
11 | crossbar
12 | .tox/*/lib/python*/site-packages/crossbar
13 | .tox/*/lib/site-packages/crossbar
14 | .tox/pypy*/site-packages/crossbar
15 |
16 | [report]
17 | precision = 2
18 | exclude_lines =
19 | def __repr__
20 | raise AssertionError
21 | pragma: no cover
22 | if self\._debug
23 | raise NotImplementedError
24 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | root = true
4 |
5 | [*]
6 | indent_style = space
7 | end_of_line = lf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 | charset = utf-8
11 |
12 | # Python files
13 | [*.py]
14 | indent_size = 4
15 | # isort plugin configuration
16 | known_first_party = sphinxcontrib
17 | multi_line_output = 2
18 | default_section = THIRDPARTY
19 | skip = .eggs docs
20 |
21 | # .travis.yml
22 | [.travis.yml]
23 | indent_size = 2
24 |
25 | # Dockerfile
26 | [Dockerfile]
27 | indent_size = 4
28 |
29 | # Override for Makefile
30 | [{Makefile, makefile, GNUmakefile}]
31 | indent_style = tab
32 | indent_size = 4
33 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .qemu
2 | .build
3 | crossbar.spec
4 | key.pub
5 | key.priv
6 | *.mp4
7 | *.sec
8 | *.pyc
9 | *.pyo
10 | *.dat
11 | *.sublime-workspace
12 | *.sublime-project
13 | build
14 | dist
15 | .coverage
16 | htmlcov/
17 | *.egg-info
18 | *.log
19 | *.pid
20 | dropin.cache
21 | crossbardata
22 | .sconsign.dblite
23 | *.~vsd
24 | node_modules
25 | .idea
26 | _trial_temp
27 | *~
28 | dist
29 | build
30 | *.egg-info
31 | *.db
32 | *.zip
33 | *.egg
34 | /.crossbar
35 | _trial_temp*
36 | node_modules
37 | .tox
38 | *.swp
39 | *.ropeproject
40 | docs/_build
41 | .coverage.*
42 | vers/
43 | .DS_Store
44 | _build
45 | pip-wheel-metadata
46 |
47 | # vscode
48 | .vscode/*
49 | !.vscode/settings.json
50 | !.vscode/tasks.json
51 | !.vscode/launch.json
52 | !.vscode/extensions.json
53 | .vscode
54 | get-pip.py
55 | .db-controller
56 | .db-mrealm-*
57 | .xbrnetwork
58 | test/test_automated/.test/
59 |
--------------------------------------------------------------------------------
/MANIFEST.in:
--------------------------------------------------------------------------------
1 | include README.rst
2 | include crossbar/LICENSE
3 | include crossbar/LICENSES-OSS
4 | include requirements.txt
5 | include requirements-min.txt
6 | include requirements-latest.txt
7 | include requirements-pinned.txt
8 | include requirements-dev.txt
9 | recursive-include crossbar/common/keys *
10 | recursive-include crossbar/node/templates *
11 | recursive-include crossbar/webservice/templates *
12 | recursive-include crossbar/adapter/mqtt/test/certs *
13 | recursive-include crossbar/edge/webservice/templates *
14 | recursive-include crossbar/edge/node/config *
15 | recursive-include crossbar/master/webservice/templates *
16 | recursive-include crossbar/master/node *.json
17 | recursive-include crossbar/network/node *.json
18 | recursive-include crossbar/test *
19 |
--------------------------------------------------------------------------------
/cloc.def:
--------------------------------------------------------------------------------
1 | FlatBuffers
2 | filter call_regexp_common C++
3 | extension fbs
4 | 3rd_gen_scale 0.77
5 | end_of_line_continuation \\$
6 |
--------------------------------------------------------------------------------
/crossbar.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/crossbar.ico
--------------------------------------------------------------------------------
/crossbar/_compat.py:
--------------------------------------------------------------------------------
1 | #####################################################################################
2 | #
3 | # Copyright (c) typedef int GmbH
4 | # SPDX-License-Identifier: EUPL-1.2
5 | #
6 | #####################################################################################
7 |
8 |
9 | def native_string(string):
10 | """
11 | Make C{string} be the type of C{str}, decoding with ASCII if required.
12 | """
13 | if isinstance(string, bytes):
14 | return string.decode('ascii')
15 | else:
16 | raise ValueError("This is already a native string.")
17 |
--------------------------------------------------------------------------------
/crossbar/_version.py:
--------------------------------------------------------------------------------
1 | #####################################################################################
2 | #
3 | # Copyright (c) typedef int GmbH
4 | # SPDX-License-Identifier: EUPL-1.2
5 | #
6 | #####################################################################################
7 |
8 | __version__ = '23.1.2'
9 | __build__ = '19000101-0000000'
10 |
--------------------------------------------------------------------------------
/crossbar/bridge/__init__.py:
--------------------------------------------------------------------------------
1 | #####################################################################################
2 | #
3 | # Copyright (c) typedef int GmbH
4 | # SPDX-License-Identifier: EUPL-1.2
5 | #
6 | #####################################################################################
7 |
--------------------------------------------------------------------------------
/crossbar/bridge/mqtt/__init__.py:
--------------------------------------------------------------------------------
1 | #####################################################################################
2 | #
3 | # Copyright (c) typedef int GmbH
4 | # SPDX-License-Identifier: EUPL-1.2
5 | #
6 | #####################################################################################
7 |
--------------------------------------------------------------------------------
/crossbar/bridge/mqtt/test/__init__.py:
--------------------------------------------------------------------------------
1 | #####################################################################################
2 | #
3 | # Copyright (c) typedef int GmbH
4 | # SPDX-License-Identifier: EUPL-1.2
5 | #
6 | #####################################################################################
7 |
--------------------------------------------------------------------------------
/crossbar/bridge/mqtt/test/certs/dhparam:
--------------------------------------------------------------------------------
1 | -----BEGIN DH PARAMETERS-----
2 | MIIBCAKCAQEA2wdciscOCxu6vMl2P9s0u1v5TDbnq9m07z9I+3Etsotp2XF4bzoi
3 | kf9irMeYiKQyC07j2fsdy4sL19OrWimqIllfbwrMCwzSX2YVO9w2/qKStWA/bqgh
4 | jcnRDTnKF0uIpp2qvLqrWBV2uEeiZf+nU0VubIyl04sVb93sP56997f6e4p4kEPW
5 | tOHCJ1TngJglHFmVeQkyAkZ5nS1h8FMda8TB0U+35RSpLagEH8GDp7P4lCgJJwwW
6 | BDt/f6rPWyoNb+v5skFh2K5vOFiRXB4sqvTo248C+I/OzBSrmbypq486+tUJud1e
7 | Vei98HRM4LuJ+1LZB4kgEw9MeQgZ48RJAwIBAg==
8 | -----END DH PARAMETERS-----
9 |
--------------------------------------------------------------------------------
/crossbar/bridge/rest/__init__.py:
--------------------------------------------------------------------------------
1 | #####################################################################################
2 | #
3 | # Copyright (c) typedef int GmbH
4 | # SPDX-License-Identifier: EUPL-1.2
5 | #
6 | #####################################################################################
7 |
8 | from crossbar.bridge.rest.callee import RESTCallee
9 | from crossbar.bridge.rest.caller import CallerResource
10 | from crossbar.bridge.rest.publisher import PublisherResource
11 | from crossbar.bridge.rest.subscriber import MessageForwarder
12 | from crossbar.bridge.rest.webhook import WebhookResource
13 |
14 | __all__ = ("PublisherResource", "CallerResource", "RESTCallee", "MessageForwarder", "WebhookResource")
15 |
--------------------------------------------------------------------------------
/crossbar/common/__init__.py:
--------------------------------------------------------------------------------
1 | #####################################################################################
2 | #
3 | # Copyright (c) typedef int GmbH
4 | # SPDX-License-Identifier: EUPL-1.2
5 | #
6 | #####################################################################################
7 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-16-10.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 16.10 release public key
2 | RWQ2MDk26PKBMNUZG2Jok1tMBB1SKyci+N7dtcep8jrikTl4NvI1Rnux
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-17-1.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 17.01 release public key
2 | RWT2m9aiCrNRpP5cqhQU++lSfqY5DiCgwsoYUqTbnZOV5kUT0CPbbH3v
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-17-10.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 17.10 release public key
2 | RWSn8tzJzPzvvgZZxRFsQeiSwFr7V72r49KtGJyU0YtaSFf0ZtxW2U7a
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-17-11.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 17.11 release public key
2 | RWT/n6IQ4dKesCP8YwwJiWH30ST8eq5D21ih4EFbJZazzsqEX6CmaT3k
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-17-12.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 17.12 release public key
2 | RWQ0XcNYBo35t9PnNO/8H9oV+bD6Ss3ti49fr6PoqhVfZSHPUvuvIyWT
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-17-2.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 17.2 release public key
2 | RWTmo7YQ1mmpesRyo4DYay3REDoJ7HsafXYcfhK3O+lM9JbeAAGSXUTh
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-17-3.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 17.3 release public key
2 | RWRGxs0uB6vQemWGPeBt7nLG53ADoOtZy/Vve3BjlaXDqkCiVhCs7Zrv
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-17-4.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 17.04 release public key
2 | RWSPrpj1lObrB99oQJEmKUaJW8noKYNiEYX23Wma5VGnrJOcyf9e4XpL
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-17-5.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 17.5 release public key
2 | RWRrH63dDsFR7o8Z7+7gv1uLF4qPKyZXq45Ble52SJ33KFz1UicMyq0b
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-17-6.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 17.6 release public key
2 | RWTAY0Umy44F3jAVWG+tEYunifD02Kmn4Pxc2cHUMEd2sckt/llYhRXp
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-17-8.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 17.8 release public key
2 | RWS7C+EWC0+LY3r7v/QTHDcJpdzmdXAZy2V7fms08hz6UP4AeS83/B3w
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-17-9.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 17.9 release public key
2 | RWRj+Sb8UH/pwLCycZ+3OroR5UV9aaLUDVbKxNcj+gYoOOZv0LrzMH1a
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-18-10.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 18.10 release public key
2 | RWTx2wgTugWxGlWCdOyiuxvD9MAgZR/uKGL7wb+B4GSMo+kk2ARBvYAd
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-18-11.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 18.11 release public key
2 | RWT7wee0x5xybWqK6YIiqugsEOGULeL+40maK5ZnIktIejS+j9DiyEtS
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-18-12.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 18.12 release public key
2 | RWRL2URPgi6MK0CkpI9a4HzKYMTH/wZtSX2tISkJIXE1ctt7+Bf+fWEn
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-18-3.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 18.3 release public key
2 | RWRo1ikD3CYkevlRg/r9/tfXNzulz3+2LB5XZiMkGlGjIhnalP5WoM8M
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-18-4.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 18.4 release public key
2 | RWRoWUpWxaQIXo+I/gl5/ghE46xcFKM4YXQlHck9kRBNLQI+rElVETMF
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-18-5.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 18.5 release public key
2 | RWQYgF8GhJnldUdxwe91sWCNoviCUlgdSzDqGzMDNDcvMzEoqslNfvZ9
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-18-6.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 18.6 release public key
2 | RWS0sX8obJP12KpJWWHyPSsJPeAxUVm+JjPWsPKCgxap8uTHuWeWU7ez
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-18-7.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 18.7 release public key
2 | RWS9T4NltFjmKSMbEtETnOMxRjLhOEZ6e80T5MYzTTh/+NP9Jk20sJmA
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-18-8.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 18.8 release public key
2 | RWSa7EvNMtH+pgqdsGMrFYLKzlafAfgcmBF17FRM/WPNHT4/j0jr3P77
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-18-9.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 18.9 release public key
2 | RWSDSZzMhv9utm/rhC+IL0t74bE6vQpI/gZuztT6MciW0/mzmijWMt9f
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-19-1.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 19.1 release public key
2 | RWSYMhkKjlumkHKD93y/IDruNCLAbAgcBYW551mEk1qtv0KkTapYBfmc
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-19-10.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 19.10 release public key
2 | RWRlUB1klnmQWao9JKtkTu5GeI74LHoQnhH8q7vvT+oRlbyWRmd74kbw
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-19-11.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 19.11 release public key
2 | RWRqR6raFel6OuYLTuprWw1j8WZWx+Zk0wCOnpkb42wem/l6mWCyb+Pe
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-19-2.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 19.2 release public key
2 | RWR2yD4qEkDnHAOwcTx6qTqaTT55n+J5pWez5jXUFT89fwlfVO77nFaV
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-19-3.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 19.3 release public key
2 | RWTugc8VlQqH/Fr5WgYYPCRo6CqsJuXOlLN0ZcEQpM8JXbj3g8KN6Aww
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-19-4.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 19.4 release public key
2 | RWS5uHo6IKYRP0FenpUuAdKEWqi2Y+BOeO+AE51m6YTjixrE7kZDjNq0
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-19-5.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 19.5 release public key
2 | RWS2VBAg82a+ff39Eo4xC0eZzAEjlRf9EKmQ/mSibc0/ZvYXBrQL/2FI
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-19-6.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 19.6 release public key
2 | RWTS7Lf+Zks97Pu2hRHkjaVPjjbDCUVc2tOAHjsd1a1W5cKKciAoSIRE
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-19-7.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 19.7 release public key
2 | RWQTB6Q9KDpGRX8p5mSxBUge+ZAKLC0/N2fJpyBPifUOlW3MfbwW8h6H
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-19-9.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 19.9 release public key
2 | RWQoOyjbSuwuwM6iEY7+43Myslb2wEJpCsTljGELCEeTMMyfWSjCQF1U
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-20-1.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 20.1 release public key
2 | RWTg6NK33a/KXvRvBD3AxRN6P+jyCQbTaELF2rzMa5h0ao+i0Te3I3K4
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-20-12.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 20.12 release public key
2 | RWREftnZm46PwN1JYek1p/4FhfA2UtCu8BniQeH6T5Gs712cDKQ7XbWc
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-20-2.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 20.2 release public key
2 | RWRNmnwUaF+fsGoUNR59gHdfKU0HLUTZSQmXzrcMODXwOpq17UWV4G2G
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-20-4.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 20.4 release public key
2 | RWRvxakry+zoFQFDliL0ALJ36rBzgAMQO9NKsxRLLLzXz0xFqIcmi8h4
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-20-5.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 20.5 release public key
2 | RWRCwbVSHPPyh5AMf5965n+tP1EJ18aOuO4yIAK4EiZkQsAGdWYh3Paw
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-20-6.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 20.6 release public key
2 | RWQHer9KKmNsqP057xopw37DfYE8pl92aOWU5E+OWdhlwtCns7nlKjpE
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-20-7.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 20.7 release public key
2 | RWT3yJ/q6XYhAf67c7VEgN/LBGCpjPOyoBsv6d32W/eyaKxQ4DR45diO
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-20-8.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 20.8 release public key
2 | RWQ4VrXXmZuEsP4YXlhRfRu+ZqVwNC1qmyJaWCXX/sv4Dqiy4SiPa0Yy
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-21-1.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 21.1 release public key
2 | RWRCg8IXEYo6/z3ZPrKHys8UZqC4psKjy7N8ukzTN/o+vUcEyhGw2COj
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-21-11.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 21.11 release public key
2 | RWT8YYDwXKYOjxxrQbsnUGFiIMKO5MDuAt+0i0s12fxM3zpfy3TCP4rU
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-21-2.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 21.2 release public key
2 | RWSPS2sNAXZ18kBoP19HNmkQL4O7eIhZIxpMrQ3WYpvHy9L5orbDzXGg
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-21-3.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 21.3 release public key
2 | RWT906S6dtgOY3NZrHd3uFtXpAPFUc6+bdpADYJRJi4daUaCT5U/0OrO
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-21-4.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 21.4 release public key
2 | RWRY4q+DtUUqfOWCXacMcn3sLro21Z9oMR+eh1XUiqx8au3j1xIofLqj
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-21-6.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 21.6 release public key
2 | RWQAuKCmh07GueDGPDEe/SwEbGXicGlJj+kDpjA9kVAPwQ6pmPDsCA7/
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-22-1.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 22.1 release public key
2 | RWQ7w++/Cg/RiwlsA+sWBUkG+H6AtmUAgkRf024XBeWn0qzg7LEKWSSN
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-22-2.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 22.2 release public key
2 | RWRXn6E3fKGODnVOfeff9H/E+lc9hRgd+9wrOFbtFzqHcqxqusmUUo41
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-22-3.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 22.3 release public key
2 | RWRPe9BqdJL2vTjTj5h9evaVY4LiFHmbi8Gy1T83OVnWMFkYm9tQEOu4
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-22-4.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 22.4 release public key
2 | RWRKAzJYB4JSiJtkfJAAf7Zf6OvEHIZSQYW2+n6WWyWa6sRTmcFH4dPv
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-22-5.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 22.5 release public key
2 | RWTjiowxkBXdcYtq+5dhO6xtjCSCgySAIsZ/fzLU9w6ZwGlwB6areWfg
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-22-6.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 22.6 release public key
2 | RWRgokUo5rovJw07csyhF67Tw2NOeE7ygo/lxLYK0iF7LVZFxb4O6ti5
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-22-7.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 22.7 release public key
2 | RWShqPyCQYDTi6gHaD1KTNElM1OUTx8kTcJK+F7q4T63X5Q0knMlJf7g
3 |
--------------------------------------------------------------------------------
/crossbar/common/keys/crossbar-23-1.pub:
--------------------------------------------------------------------------------
1 | untrusted comment: Crossbar.io 23.1 release public key
2 | RWTJEBnQ2CUAKCg6P72dpCqmZ/1zpiwhSNWZLlbn7HepEHtc/PYgxjd4
3 |
--------------------------------------------------------------------------------
/crossbar/common/twisted/__init__.py:
--------------------------------------------------------------------------------
1 | #####################################################################################
2 | #
3 | # Copyright (c) typedef int GmbH
4 | # SPDX-License-Identifier: EUPL-1.2
5 | #
6 | #####################################################################################
7 |
--------------------------------------------------------------------------------
/crossbar/common/twisted/test/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/crossbar/common/twisted/test/__init__.py
--------------------------------------------------------------------------------
/crossbar/common/twisted/test/test_resource.py:
--------------------------------------------------------------------------------
1 | #####################################################################################
2 | #
3 | # Copyright (c) typedef int GmbH
4 | # SPDX-License-Identifier: EUPL-1.2
5 | #
6 | #####################################################################################
7 |
--------------------------------------------------------------------------------
/crossbar/edge/__init__.py:
--------------------------------------------------------------------------------
1 | ##############################################################################
2 | #
3 | # Crossbar.io
4 | # Copyright (C) Crossbar.io Technologies GmbH. All rights reserved.
5 | #
6 | ##############################################################################
7 |
8 | import txaio
9 |
10 | txaio.use_twisted() # noqa
11 |
12 | from autobahn import xbr
13 | from crossbar._version import __version__, __build__
14 | from crossbar.edge.personality import Personality
15 |
16 | __all__ = ('__version__', '__build__', 'Personality', 'xbr')
17 | __doc__ = Personality.DESC
18 |
--------------------------------------------------------------------------------
/crossbar/edge/node/__init__.py:
--------------------------------------------------------------------------------
1 | ##############################################################################
2 | #
3 | # Crossbar.io
4 | # Copyright (C) Crossbar.io Technologies GmbH. All rights reserved.
5 | #
6 | ##############################################################################
7 |
8 | from crossbar.edge.node.node import FabricNode, FabricNodeControllerSession
9 |
10 | __all__ = ('FabricNode', 'FabricNodeControllerSession')
11 |
--------------------------------------------------------------------------------
/crossbar/edge/node/config/bare.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://raw.githubusercontent.com/crossbario/crossbar/master/crossbar.json",
3 | "version": 2,
4 | "controller": {
5 | "options": {
6 | "shutdown": ["shutdown_on_shutdown_requested"],
7 | "enable_parallel_worker_start": true
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/crossbar/edge/node/config/pairme.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://raw.githubusercontent.com/crossbario/crossbar/master/crossbar.json",
3 | "version": 2,
4 | "workers": [
5 | {
6 | "type": "router",
7 | "realms": [],
8 | "transports": [
9 | {
10 | "type": "web",
11 | "endpoint": {
12 | "type": "tcp",
13 | "port": 8080
14 | },
15 | "paths": {
16 | "/": {
17 | "type": "pairme"
18 | }
19 | }
20 | }
21 | ]
22 | }
23 | ]
24 | }
25 |
--------------------------------------------------------------------------------
/crossbar/edge/node/tests/__init__.py:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | #
3 | # Crossbar.io Master
4 | # Copyright (c) typedef int GmbH. Licensed under EUPLv1.2.
5 | #
6 | ###############################################################################
7 | # Don't ask me why this is needed, Sublime / py.test is an interesting
8 | # combination ...
9 |
--------------------------------------------------------------------------------
/crossbar/edge/webservice/__init__.py:
--------------------------------------------------------------------------------
1 | ##############################################################################
2 | #
3 | # Crossbar.io
4 | # Copyright (C) Crossbar.io Technologies GmbH. All rights reserved.
5 | #
6 | ##############################################################################
7 |
8 | from .pairme import RouterWebServicePairMe
9 |
10 | __all__ = ('RouterWebServicePairMe', )
11 |
--------------------------------------------------------------------------------
/crossbar/edge/worker/__init__.py:
--------------------------------------------------------------------------------
1 | ##############################################################################
2 | #
3 | # Crossbar.io
4 | # Copyright (C) Crossbar.io Technologies GmbH. All rights reserved.
5 | #
6 | ##############################################################################
7 |
--------------------------------------------------------------------------------
/crossbar/edge/worker/monitor/__init__.py:
--------------------------------------------------------------------------------
1 | ##############################################################################
2 | #
3 | # Crossbar.io
4 | # Copyright (C) Crossbar.io Technologies GmbH. All rights reserved.
5 | #
6 | ##############################################################################
7 |
8 | from crossbar.edge.worker.monitor._self import SelfMonitor
9 | from crossbar.edge.worker.monitor._hardware import HWMonitor
10 | from crossbar.edge.worker.monitor._network import NetMonitor
11 | from crossbar.edge.worker.monitor._storage import StorageMonitor
12 | from crossbar.edge.worker.monitor._system import SystemMonitor
13 | from crossbar.edge.worker.monitor._memory import MemoryMonitor
14 | from crossbar.edge.worker.monitor._cpu import CPUMonitor
15 | from crossbar.edge.worker.monitor._disk import IOMonitor
16 | from crossbar.edge.worker.monitor._process import ProcessMonitor
17 |
18 | __all__ = ('MONITORS', )
19 |
20 | # class map: monitor name -> monitor class
21 | MONITORS = {
22 | SelfMonitor.ID: SelfMonitor,
23 | HWMonitor.ID: HWMonitor,
24 | NetMonitor.ID: NetMonitor,
25 | StorageMonitor.ID: StorageMonitor,
26 | SystemMonitor.ID: SystemMonitor,
27 | MemoryMonitor.ID: MemoryMonitor,
28 | CPUMonitor.ID: CPUMonitor,
29 | IOMonitor.ID: IOMonitor,
30 | ProcessMonitor.ID: ProcessMonitor,
31 | }
32 |
--------------------------------------------------------------------------------
/crossbar/edge/worker/monitor/_network.py:
--------------------------------------------------------------------------------
1 | ##############################################################################
2 | #
3 | # Crossbar.io
4 | # Copyright (C) Crossbar.io Technologies GmbH. All rights reserved.
5 | #
6 | ##############################################################################
7 |
8 | import psutil
9 |
10 | from crossbar.edge.worker.monitor._base import Monitor
11 | from txaio import perf_counter_ns
12 |
13 | __all__ = ('NetMonitor', )
14 |
15 |
16 | class NetMonitor(Monitor):
17 | """
18 | Network monitoring via psutils.
19 | """
20 |
21 | ID = u'network'
22 |
23 | def poll(self):
24 | """
25 | Measure current stats value and return new stats.
26 | """
27 | hdata = Monitor.poll(self)
28 |
29 | start = perf_counter_ns()
30 |
31 | counters = {}
32 | io_counters = psutil.net_io_counters(True)
33 | for dev in io_counters:
34 | if dev.startswith('virbr') or dev.startswith('lo') or dev.startswith('docker'):
35 | continue
36 | counters[dev] = io_counters[dev]._asdict()
37 |
38 | hdata['net_io_counters'] = counters
39 | hdata['net_if_addrs'] = psutil.net_if_addrs()
40 |
41 | hdata[u'elapsed'] = perf_counter_ns() - start
42 |
43 | self._last_value = hdata
44 |
45 | return hdata
46 |
--------------------------------------------------------------------------------
/crossbar/edge/worker/monitor/_system.py:
--------------------------------------------------------------------------------
1 | ##############################################################################
2 | #
3 | # Crossbar.io
4 | # Copyright (C) Crossbar.io Technologies GmbH. All rights reserved.
5 | #
6 | ##############################################################################
7 |
8 | import os
9 | import psutil
10 |
11 | from crossbar.edge.worker.monitor._base import Monitor
12 | from txaio import perf_counter_ns
13 |
14 | __all__ = ('SystemMonitor', )
15 |
16 |
17 | class SystemMonitor(Monitor):
18 | """
19 | System monitoring via psutils.
20 | """
21 |
22 | ID = u'system'
23 |
24 | def poll(self):
25 | hdata = Monitor.poll(self)
26 |
27 | start = perf_counter_ns()
28 |
29 | hdata['cpu'] = psutil.cpu_times_percent()._asdict()
30 | hdata['memory'] = psutil.virtual_memory()._asdict()
31 | hdata['loadavg'] = os.getloadavg()
32 |
33 | # uptime, as all durations, is in ns
34 | hdata['uptime'] = int(hdata['timestamp'] - psutil.boot_time() * 10**10)
35 |
36 | hdata[u'elapsed'] = perf_counter_ns() - start
37 |
38 | self._last_value = hdata
39 |
40 | return hdata
41 |
--------------------------------------------------------------------------------
/crossbar/edge/worker/xbr/__init__.py:
--------------------------------------------------------------------------------
1 | ##############################################################################
2 | #
3 | # Crossbar.io
4 | # Copyright (C) Crossbar.io Technologies GmbH. All rights reserved.
5 | #
6 | ##############################################################################
7 |
8 | from crossbar.edge.worker.xbr._marketmaker import MarketMaker
9 | from crossbar.edge.worker.xbr._authenticator import Authenticator
10 |
11 | __all__ = ('MarketMaker', 'Authenticator')
12 |
--------------------------------------------------------------------------------
/crossbar/edge/worker/xbr/_util.py:
--------------------------------------------------------------------------------
1 | ##############################################################################
2 | #
3 | # Crossbar.io
4 | # Copyright (C) Crossbar.io Technologies GmbH. All rights reserved.
5 | #
6 | ##############################################################################
7 | import six
8 |
9 | from crossbar._util import hl
10 |
11 |
12 | def hlval(val):
13 | return hl('{}'.format(val), color='white', bold=True)
14 |
15 |
16 | def hlcontract(oid):
17 | if not isinstance(oid, six.text_type):
18 | oid = '{}'.format(oid)
19 | return hl('<{}>'.format(oid), color='magenta', bold=True)
20 |
--------------------------------------------------------------------------------
/crossbar/functest_helpers/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/crossbar/functest_helpers/__init__.py
--------------------------------------------------------------------------------
/crossbar/functest_helpers/auth.py:
--------------------------------------------------------------------------------
1 | from autobahn.twisted.util import sleep
2 |
3 |
4 | def setup_auth(session, details):
5 | def register(_):
6 | def authenticate(*args, **kw):
7 | print("test.authenticate: {} {}".format(args, kw))
8 | return {
9 | "allow": False,
10 | "role": "role0",
11 | # corresponds to a private-key of all "a"s
12 | "pubkey": "e734ea6c2b6257de72355e472aa05a4c487e6b463c029ed306df2f01b5636b58",
13 | }
14 |
15 | reg = session.register(authenticate, u"test.authenticate")
16 | print("registered: {}\n\n\n".format(reg))
17 | return reg
18 |
19 | # we wait here to simulate slow startup of the authenticator
20 | d = sleep(5)
21 | d.addCallback(register)
22 | return d
23 |
--------------------------------------------------------------------------------
/crossbar/functest_helpers/shutdown_test.py:
--------------------------------------------------------------------------------
1 | """
2 | Helpers for test_cb_shutdown.py
3 | """
4 |
5 | from twisted.internet import reactor, task
6 |
7 |
8 | def good_join(session, details):
9 | print("good join: {}".format(details))
10 |
11 | def foo():
12 | return "foo"
13 |
14 | session.register(foo, u"foo")
15 | return task.deferLater(reactor, 5, lambda: None)
16 |
17 |
18 | def failed_join(session, details):
19 | print("failed join: {}".format(details))
20 |
21 | # we wait more than 2 seconds here to avoid the "component exited
22 | # really quickly, shut down the node" code in
23 | # crossbar/node/node.py
24 |
25 | def fail():
26 | raise RuntimeError("the bad stuff")
27 |
28 | return task.deferLater(reactor, 5, fail)
29 |
30 |
31 | def join_then_close(session, details):
32 | print("join then fail: {}".format(details))
33 |
34 | def fail():
35 | session.disconnect()
36 |
37 | return task.deferLater(reactor, 5, fail)
38 |
--------------------------------------------------------------------------------
/crossbar/master/__init__.py:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | #
3 | # Crossbar.io Master
4 | # Copyright (c) typedef int GmbH. Licensed under EUPLv1.2.
5 | #
6 | ###############################################################################
7 |
8 | from autobahn import xbr
9 | from crossbar._version import __version__, __build__
10 |
11 | import txaio
12 |
13 | txaio.use_twisted()
14 |
15 | from crossbar.master.personality import Personality # noqa
16 |
17 | __all__ = ('__version__', '__build__', 'Personality', 'xbr')
18 | __doc__ = Personality.DESC
19 |
--------------------------------------------------------------------------------
/crossbar/master/api/__init__.py:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | #
3 | # Crossbar.io Master
4 | # Copyright (c) typedef int GmbH. Licensed under EUPLv1.2.
5 | #
6 | ###############################################################################
7 |
8 | from typing import List, Union # noqa
9 |
10 | from crossbar.master.api.remote import RemoteApi # noqa
11 | from crossbar.master.api.node import RemoteNodeApi
12 | # from crossbar.master.api.nativeprocess import RemoteNativeProcessApi
13 | from crossbar.master.api.worker import RemoteWorkerApi
14 | from crossbar.master.api.router import RemoteRouterApi
15 | from crossbar.master.api.container import RemoteContainerApi
16 | from crossbar.master.api.proxy import RemoteProxyApi
17 | from crossbar.master.api.tracing import RemoteTracingApi
18 | from crossbar.master.api.docker import RemoteDockerApi
19 | from crossbar.master.api.wamp import RemoteWampApi
20 |
21 | APIS = [] # type: List[Union[RemoteApi, RemoteWampApi]]
22 | APIS.append(RemoteNodeApi())
23 | # APIS.append(RemoteNativeProcessApi())
24 | APIS.append(RemoteWorkerApi())
25 | APIS.append(RemoteRouterApi())
26 | APIS.append(RemoteContainerApi())
27 | APIS.append(RemoteProxyApi())
28 | APIS.append(RemoteTracingApi())
29 | APIS.append(RemoteDockerApi())
30 | APIS.append(RemoteWampApi())
31 |
--------------------------------------------------------------------------------
/crossbar/master/api/container.py:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | #
3 | # Crossbar.io Master
4 | # Copyright (c) typedef int GmbH. Licensed under EUPLv1.2.
5 | #
6 | ###############################################################################
7 |
8 | from crossbar.master.api.remote import RemoteApi
9 |
10 | __all__ = ('RemoteContainerApi', )
11 |
12 |
13 | class RemoteContainerApi(RemoteApi):
14 |
15 | # remote procedures and topics are exposed under this prefix
16 | PREFIX = u'crossbarfabriccenter.remote.container.'
17 |
18 | PROCS = {
19 | # these are worker level procedures
20 | u'worker': [
21 | (u'get_components', u'get_components'),
22 | (u'get_component', u'get_component'),
23 | (u'start_component', u'start_component'),
24 | (u'stop_component', u'stop_component'),
25 | ],
26 | }
27 |
28 | EVENTS = {
29 | # these are worker level topics
30 | u'worker': [
31 | u'on_container_component_starting',
32 | u'on_container_component_started',
33 | u'on_container_component_stopping',
34 | u'on_container_component_stopped',
35 | ]
36 | }
37 |
--------------------------------------------------------------------------------
/crossbar/master/api/tracing.py:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | #
3 | # Crossbar.io Master
4 | # Copyright (c) typedef int GmbH. Licensed under EUPLv1.2.
5 | #
6 | ###############################################################################
7 |
8 | from crossbar.master.api.remote import RemoteApi
9 |
10 | __all__ = ('RemoteTracingApi', )
11 |
12 |
13 | class RemoteTracingApi(RemoteApi):
14 |
15 | # remote procedures and topics are exposed under this prefix
16 | PREFIX = u'crossbarfabriccenter.remote.tracing.'
17 |
18 | PROCS = {
19 | # these are worker level procedures
20 | u'worker': [
21 | u'get_traces',
22 | u'get_trace',
23 | u'start_trace',
24 | u'stop_trace',
25 | u'get_trace_data',
26 | ],
27 | }
28 |
29 | EVENTS = {
30 | # these are worker level topics
31 | u'worker': [
32 | u'on_trace_started',
33 | u'on_trace_stopped',
34 | u'on_trace_data',
35 | ]
36 | }
37 |
--------------------------------------------------------------------------------
/crossbar/master/api/worker.py:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | #
3 | # Crossbar.io Master
4 | # Copyright (c) typedef int GmbH. Licensed under EUPLv1.2.
5 | #
6 | ###############################################################################
7 |
8 | from crossbar.master.api.remote import RemoteApi
9 |
10 | __all__ = ('RemoteWorkerApi', )
11 |
12 |
13 | class RemoteWorkerApi(RemoteApi):
14 |
15 | PREFIX = u'crossbarfabriccenter.remote.worker.'
16 |
17 | PROCS = {
18 | # these are worker level procedures
19 | u'worker': [
20 | u'shutdown',
21 | u'get_status',
22 | u'get_pythonpath',
23 | u'add_pythonpath',
24 | u'get_cpu_affinity',
25 | u'set_cpu_affinity',
26 | u'get_profilers',
27 | u'start_profiler',
28 | u'get_profile',
29 | u'get_process_info',
30 | u'get_process_stats',
31 | u'set_process_stats_monitoring',
32 | ],
33 | }
34 |
35 | EVENTS = {
36 | # these are worker level topics
37 | u'worker': [
38 | u'on_worker_log',
39 | u'on_profile_started',
40 | u'on_profile_finished',
41 | ]
42 | }
43 |
--------------------------------------------------------------------------------
/crossbar/master/arealm/__init__.py:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | #
3 | # Crossbar.io Master
4 | # Copyright (c) typedef int GmbH. Licensed under EUPLv1.2.
5 | #
6 | ###############################################################################
7 |
8 | from crossbar.master.arealm.arealm import ApplicationRealmManager
9 |
10 | __all__ = ('ApplicationRealmManager', )
11 |
--------------------------------------------------------------------------------
/crossbar/master/cluster/__init__.py:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | #
3 | # Crossbar.io Master
4 | # Copyright (c) typedef int GmbH. Licensed under EUPLv1.2.
5 | #
6 | ###############################################################################
7 |
8 | from crossbar.master.cluster.routercluster import RouterClusterManager
9 | from crossbar.master.cluster.webcluster import WebClusterManager
10 |
11 | __all__ = (
12 | 'WebClusterManager',
13 | 'RouterClusterManager',
14 | )
15 |
--------------------------------------------------------------------------------
/crossbar/master/mrealm/__init__.py:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | #
3 | # Crossbar.io Master
4 | # Copyright (c) typedef int GmbH. Licensed under EUPLv1.2.
5 | #
6 | ###############################################################################
7 |
8 | from crossbar.master.mrealm.controller import MrealmController
9 |
10 | __all__ = ('MrealmController', )
11 |
--------------------------------------------------------------------------------
/crossbar/master/node/__init__.py:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | #
3 | # Crossbar.io Master
4 | # Copyright (c) typedef int GmbH. Licensed under EUPLv1.2.
5 | #
6 | ###############################################################################
7 |
8 | from crossbar.master.node.controller import DomainManager, DomainController
9 |
10 | __all__ = (
11 | 'DomainManager',
12 | 'DomainController',
13 | )
14 |
--------------------------------------------------------------------------------
/crossbar/master/node/node.ini:
--------------------------------------------------------------------------------
1 | # geth cluster for CFC node to talk to the blockchain
2 | [geth]
3 | url=http://localhost:9003
4 |
5 | # Mailgun email gateway configuration and security credentials
6 | [mailgun]
7 | url=https://api.mailgun.net/v3/mailing.crossbar.io/messages
8 | key=key-1379af54ab7439eec2fbd58505b1a8ec
9 |
10 | [smtp]
11 | server=smtp.mailgun.org
12 | sender=fabric@crossbar.io
13 | password=3kh9umujora5
14 |
15 | # CFC web transport listening endpoint configuration
16 | [endpoint]
17 | hostname=fabric.crossbario.com,cf1.crossbario.com
18 | port=443
19 | tls=1
20 | tls_key=server.key
21 | tls_cert=server.crt
22 | tls_chain_certs=lets-encrypt-x3-cross-signed.pem
23 | tls_dhparam=dhparam.pem
24 | tls_ciphers=ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256
25 |
--------------------------------------------------------------------------------
/crossbar/master/webservice/__init__.py:
--------------------------------------------------------------------------------
1 | ##############################################################################
2 | #
3 | # Crossbar.io
4 | # Copyright (C) Crossbar.io Technologies GmbH. All rights reserved.
5 | #
6 | ##############################################################################
7 |
8 | from .registerme import RouterWebServiceRegisterMe
9 |
10 | __all__ = ('RouterWebServiceRegisterMe', )
11 |
--------------------------------------------------------------------------------
/crossbar/master/webservice/templates/cfc_debug_resource.html:
--------------------------------------------------------------------------------
1 | {% extends "cb_base.html" %}
2 |
3 | {% block content %}
4 |
5 |
CFC Web service test resource
6 | Current time: {{ now }}
7 |
8 | {% endblock %}
9 |
--------------------------------------------------------------------------------
/crossbar/master/webservice/templates/xbr-api-hub-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/crossbar/master/webservice/templates/xbr-api-hub-logo.png
--------------------------------------------------------------------------------
/crossbar/master/webservice/templates/xbr-idl-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/crossbar/master/webservice/templates/xbr-idl-logo.png
--------------------------------------------------------------------------------
/crossbar/master/xbr/__init__.py:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | #
3 | # Crossbar.io Master
4 | # Copyright (c) typedef int GmbH. Licensed under EUPLv1.2.
5 | #
6 | ###############################################################################
7 |
8 | from crossbar.master.xbr._marketplace import MarketPlace
9 |
10 | __all__ = ('MarketPlace', )
11 |
--------------------------------------------------------------------------------
/crossbar/master/xbr/_marketplace.py:
--------------------------------------------------------------------------------
1 | ##############################################################################
2 | #
3 | # Crossbar.io
4 | # Copyright (C) Crossbar.io Technologies GmbH. All rights reserved.
5 | #
6 | ##############################################################################
7 |
8 | from autobahn import wamp
9 |
10 | __all__ = ('MarketPlace', )
11 |
12 |
13 | class MarketPlace(object):
14 | """
15 | XBR Market Maker.
16 | """
17 | @wamp.register(None)
18 | def publish(self, publisher_id, api_id, service_id, price=None, details=None):
19 | """
20 | Publish a data service implementing a data service API to the market place.
21 |
22 | :param api_id:
23 | :param service_id:
24 | :param price:
25 | :param details:
26 | :return:
27 | """
28 | raise NotImplementedError()
29 |
--------------------------------------------------------------------------------
/crossbar/network/__init__.py:
--------------------------------------------------------------------------------
1 | ##############################################################################
2 | #
3 | # Crossbar.io
4 | # Copyright (C) Crossbar.io Technologies GmbH. All rights reserved.
5 | #
6 | ##############################################################################
7 |
8 | import txaio
9 |
10 | txaio.use_twisted()
11 |
12 | from crossbar.network._authenticator import Authenticator as XbrNetworkAuthenticator
13 | from crossbar.network._api import Network as XbrNetwork
14 | from crossbar.network.personality import Personality
15 |
16 | __doc__ = Personality.DESC
17 |
18 | __all__ = (
19 | 'Personality',
20 | 'XbrNetwork',
21 | 'XbrNetworkAuthenticator',
22 | )
23 |
--------------------------------------------------------------------------------
/crossbar/network/_error.py:
--------------------------------------------------------------------------------
1 | # coding=utf8
2 |
3 | ##############################################################################
4 | #
5 | # Crossbar.io
6 | # Copyright (C) Crossbar.io Technologies GmbH. All rights reserved.
7 | #
8 | ##############################################################################
9 |
10 | from autobahn.wamp.exception import ApplicationError
11 | from autobahn.wamp.uri import error
12 |
13 |
14 | @error('xbr.network.error.username_already_exists')
15 | class UsernameAlreadyExists(ApplicationError):
16 | """
17 | An action could not be performed because the chosen username already exists.
18 | """
19 | def __init__(self, username, alt_username=None):
20 | if alt_username:
21 | msg = 'username "{}" already exists. alternative available username "{}"'.format(username, alt_username)
22 | else:
23 | msg = 'username "{}" already exists'.format(username)
24 | super().__init__('xbr.network.error.username_already_exists', msg, alt_username=alt_username)
25 |
--------------------------------------------------------------------------------
/crossbar/network/node/__init__.py:
--------------------------------------------------------------------------------
1 | ##############################################################################
2 | #
3 | # Crossbar.io
4 | # Copyright (C) Crossbar.io Technologies GmbH. All rights reserved.
5 | #
6 | ##############################################################################
7 |
8 | from crossbar.network.node.node import XbrNetworkNode, XbrNetworkNodeControllerSession
9 |
10 | __all__ = ('XbrNetworkNode', 'XbrNetworkNodeControllerSession')
11 |
--------------------------------------------------------------------------------
/crossbar/network/node/node.py:
--------------------------------------------------------------------------------
1 | ##############################################################################
2 | #
3 | # Crossbar.io
4 | # Copyright (C) Crossbar.io Technologies GmbH. All rights reserved.
5 | #
6 | ##############################################################################
7 |
8 | from crossbar.edge.node import FabricNode, FabricNodeControllerSession
9 |
10 |
11 | class XbrNetworkNodeControllerSession(FabricNodeControllerSession):
12 | pass
13 |
14 |
15 | class XbrNetworkNode(FabricNode):
16 | """
17 | Crossbar.io node personality.
18 | """
19 | DEFAULT_CONFIG_PATH = 'network/node/config.json'
20 | NODE_CONTROLLER = XbrNetworkNodeControllerSession
21 |
--------------------------------------------------------------------------------
/crossbar/network/personality.py:
--------------------------------------------------------------------------------
1 | ##############################################################################
2 | #
3 | # Crossbar.io
4 | # Copyright (C) Crossbar.io Technologies GmbH. All rights reserved.
5 | #
6 | ##############################################################################
7 |
8 | import txaio
9 |
10 | from crossbar.network.node.node import XbrNetworkNode
11 | from crossbar.edge.personality import Personality as _Personality
12 |
13 |
14 | class Personality(_Personality):
15 |
16 | log = txaio.make_logger()
17 |
18 | NAME = 'network'
19 |
20 | Node = XbrNetworkNode
21 |
22 | def check_config(self, personality):
23 | res = _Personality.check_config(self, personality)
24 | return res
25 |
26 | def check_config_file(self, personality, config_path):
27 | res = _Personality.check_config_file(self, personality, config_path)
28 | return res
29 |
--------------------------------------------------------------------------------
/crossbar/newsfragments/.gitignore:
--------------------------------------------------------------------------------
1 | !.gitignore
2 |
--------------------------------------------------------------------------------
/crossbar/newsfragments/1531.enhancement:
--------------------------------------------------------------------------------
1 | crossbar keygen output is now in hex (configuration uses hex)
--------------------------------------------------------------------------------
/crossbar/newsfragments/1607.feature:
--------------------------------------------------------------------------------
1 | Added container shutdown and restart modes, and got rid of a
2 | special-case for controller shutdown (if any container-component
3 | failed in the first two seconds, the node would shutdown). Use
4 | shutdown trigger `shutdown_on_worker_exit_with_error' along with
5 | container shutdown option `shutdown-on-any-component-failed` to
6 | maintain similar behavior.
--------------------------------------------------------------------------------
/crossbar/newsfragments/208.bugfix:
--------------------------------------------------------------------------------
1 | remove broken WAMP-Ticket auth from REST Bridge
--------------------------------------------------------------------------------
/crossbar/node/__init__.py:
--------------------------------------------------------------------------------
1 | #####################################################################################
2 | #
3 | # Copyright (c) typedef int GmbH
4 | # SPDX-License-Identifier: EUPL-1.2
5 | #
6 | #####################################################################################
7 |
--------------------------------------------------------------------------------
/crossbar/node/templates/README.md:
--------------------------------------------------------------------------------
1 | Template for initialization of a new Crossbar.io node with a simple (insecure) development configuration.
2 |
--------------------------------------------------------------------------------
/crossbar/node/templates/default/README.md:
--------------------------------------------------------------------------------
1 | Generated from Crossbar.io default node template.
2 |
--------------------------------------------------------------------------------
/crossbar/node/templates/default/web/README.md:
--------------------------------------------------------------------------------
1 | Put your Web files here. Eg a "index.html" file would automatically render (and hide this otherwise generated directory listing.)
2 |
3 | Other URLs and Web services configured in this example node configuration:
4 |
5 | * `/ws`: WAMP-over-WebSocket endpoint with default "realm1" (anonymous authentication and everything allowed!)
6 | * `/info`: Node info page
7 |
--------------------------------------------------------------------------------
/crossbar/node/test/__init__.py:
--------------------------------------------------------------------------------
1 | #####################################################################################
2 | #
3 | # Copyright (c) typedef int GmbH
4 | # SPDX-License-Identifier: EUPL-1.2
5 | #
6 | #####################################################################################
7 |
--------------------------------------------------------------------------------
/crossbar/quickstart/__init__.py:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | #
3 | # Crossbar.io Quickstart
4 | # Copyright (c) typedef int GmbH. Licensed under EUPLv1.2.
5 | #
6 | ###############################################################################
7 |
--------------------------------------------------------------------------------
/crossbar/router/__init__.py:
--------------------------------------------------------------------------------
1 | #####################################################################################
2 | #
3 | # Copyright (c) typedef int GmbH
4 | # SPDX-License-Identifier: EUPL-1.2
5 | #
6 | #####################################################################################
7 |
8 |
9 | class RouterOptions(object):
10 | """
11 | Router options for creating routers.
12 | """
13 |
14 | URI_CHECK_LOOSE = "loose"
15 | URI_CHECK_STRICT = "strict"
16 |
17 | def __init__(self, uri_check=None, event_dispatching_chunk_size=None):
18 | """
19 |
20 | :param uri_check: Method which should be applied to check WAMP URIs.
21 | :type uri_check: str
22 | """
23 | self.uri_check = uri_check or RouterOptions.URI_CHECK_STRICT
24 | self.event_dispatching_chunk_size = event_dispatching_chunk_size or 100
25 |
26 | def __str__(self):
27 | return ("RouterOptions(uri_check = {0}, "
28 | "event_dispatching_chunk_size = {1})".format(
29 | self.uri_check,
30 | self.event_dispatching_chunk_size,
31 | ))
32 |
33 |
34 | class NotAttached(RuntimeError):
35 | """
36 | Internal error: session not attached to router.
37 | """
38 |
--------------------------------------------------------------------------------
/crossbar/router/test/__init__.py:
--------------------------------------------------------------------------------
1 | #####################################################################################
2 | #
3 | # Copyright (c) typedef int GmbH
4 | # SPDX-License-Identifier: EUPL-1.2
5 | #
6 | #####################################################################################
7 |
--------------------------------------------------------------------------------
/crossbar/shell/__init__.py:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | #
3 | # Crossbar.io Shell
4 | # Copyright (c) typedef int GmbH. Licensed under EUPLv1.2.
5 | #
6 | ###############################################################################
7 | """Crossbar.io Shell (cbsh) is a tool belt for crossbar."""
8 |
9 | import txaio
10 |
11 | txaio.use_twisted() # noqa
12 |
13 | from autobahn import xbr
14 | from crossbar._version import __version__, __build__
15 |
16 | __all__ = (
17 | '__version__',
18 | '__build__',
19 | 'xbr',
20 | )
21 |
--------------------------------------------------------------------------------
/crossbar/shell/idl/__init__.py:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | #
3 | # Crossbar.io Shell
4 | # Copyright (c) typedef int GmbH. Licensed under EUPLv1.2.
5 | #
6 | ###############################################################################
7 |
--------------------------------------------------------------------------------
/crossbar/shell/idl/reflection.bfbs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/crossbar/shell/idl/reflection.bfbs
--------------------------------------------------------------------------------
/crossbar/shell/reflection/BaseType.py:
--------------------------------------------------------------------------------
1 | # automatically generated by the FlatBuffers compiler, do not modify
2 |
3 | # namespace: reflection
4 |
5 | class BaseType(object):
6 | None_ = 0
7 | UType = 1
8 | Bool = 2
9 | Byte = 3
10 | UByte = 4
11 | Short = 5
12 | UShort = 6
13 | Int = 7
14 | UInt = 8
15 | Long = 9
16 | ULong = 10
17 | Float = 11
18 | Double = 12
19 | String = 13
20 | Vector = 14
21 | Obj = 15
22 | Union = 16
23 |
--------------------------------------------------------------------------------
/crossbar/shell/reflection/__init__.py:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | #
3 | # Crossbar.io Shell
4 | # Copyright (c) typedef int GmbH. Licensed under EUPLv1.2.
5 | #
6 | ###############################################################################
7 |
8 | from .BaseType import BaseType
9 | from .Enum import Enum
10 | from .EnumVal import EnumVal
11 | from .Field import Field
12 | from .KeyValue import KeyValue
13 | from .Object import Object
14 | from .RPCCall import RPCCall
15 | from .Schema import Schema
16 | from .Service import Service
17 | from .Type import Type
18 |
--------------------------------------------------------------------------------
/crossbar/shell/tests/test_shell_util.py:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | #
3 | # Crossbar.io Shell
4 | # Copyright (c) typedef int GmbH. Licensed under EUPLv1.2.
5 | #
6 | ###############################################################################
7 |
8 | from crossbar.shell.util import localnow
9 |
10 |
11 | def test_localnow():
12 | now = localnow()
13 | assert isinstance(now, str)
14 |
15 |
16 | class TestClass(object):
17 | def test_one(self):
18 | assert True
19 |
--------------------------------------------------------------------------------
/crossbar/test/__init__.py:
--------------------------------------------------------------------------------
1 | #####################################################################################
2 | #
3 | # Copyright (c) typedef int GmbH
4 | # SPDX-License-Identifier: EUPL-1.2
5 | #
6 | #####################################################################################
7 |
8 | from os import getcwd, chdir
9 |
10 | from twisted.trial.unittest import TestCase as _TestCase
11 |
12 |
13 | class TestCase(_TestCase):
14 | """
15 | A Trial TestCase that makes sure that it is in the same directory when it
16 | finishes as when it began. This is because the CLI changes directories,
17 | meaning we can end up making thousands deep file structures.
18 | """
19 | def setUp(self):
20 | cb_original_dir = getcwd()
21 | self.addCleanup(lambda: chdir(cb_original_dir))
22 | return super(TestCase, self).setUp()
23 |
--------------------------------------------------------------------------------
/crossbar/test/test_compat.py:
--------------------------------------------------------------------------------
1 | #####################################################################################
2 | #
3 | # Copyright (c) typedef int GmbH
4 | # SPDX-License-Identifier: EUPL-1.2
5 | #
6 | #####################################################################################
7 |
8 | from twisted.trial.unittest import TestCase
9 |
10 | from crossbar import _compat as compat
11 |
12 |
13 | class NativeStringTestCase(TestCase):
14 | """
15 | Tests for C{crossbar._compat.native_string}.
16 | """
17 | def test_bytes_always_native(self):
18 | """
19 | C{native_string}, with a bytes input, will always give a str output.
20 | """
21 | self.assertEqual(type(compat.native_string(b"foo")), str)
22 |
23 | def test_unicode_not_allowed(self):
24 | """
25 | A unicode argument should never be allowed.
26 | """
27 | with self.assertRaises(ValueError):
28 | compat.native_string("bar")
29 |
--------------------------------------------------------------------------------
/crossbar/test/test_config1.json:
--------------------------------------------------------------------------------
1 | {
2 | "controller": {
3 | "id": "mynode1",
4 | "options": {
5 | "title": "Kernreaktor 7",
6 | "shutdown": ["shutdown_on_last_worker_exit"]
7 | },
8 | "fabric-center": {
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/crossbar/test/test_config2.json:
--------------------------------------------------------------------------------
1 | {
2 | "workers": [
3 | "COPY",
4 | "COPY",
5 | {
6 | "id": "wstestee1",
7 | "type": "websocket-testee",
8 | "transport": {
9 | "type": "websocket",
10 | "endpoint": {
11 | "type": "tcp",
12 | "interface": "127.0.0.1",
13 | "port": 9000,
14 | "shared": true,
15 | "backlog": 500
16 | }
17 | },
18 | "options": {
19 | "title": "Crossbar.io WebSocket Testee 1/2",
20 | "cpu_affinity": [0]
21 | }
22 | },
23 | {
24 | "id": "wstestee2",
25 | "type": "websocket-testee",
26 | "transport": {
27 | "type": "websocket",
28 | "endpoint": {
29 | "type": "tcp",
30 | "interface": "127.0.0.1",
31 | "port": 9000,
32 | "shared": true,
33 | "backlog": 500
34 | }
35 | },
36 | "options": {
37 | "title": "Crossbar.io WebSocket Testee 2/2",
38 | "cpu_affinity": [1]
39 | }
40 | }
41 | ]
42 | }
43 |
--------------------------------------------------------------------------------
/crossbar/test/test_config3.json:
--------------------------------------------------------------------------------
1 | {
2 | "workers": [
3 | {
4 | "transports": [
5 | "COPY",
6 | {
7 | "endpoint": {
8 | "port": 443,
9 | "backlog": 500,
10 | "tls": {
11 | "certificate": "server.crt",
12 | "key": "server.key",
13 | "dhparam": "dhparam.pem",
14 | "ca_certificates": [
15 | "intermediate.cert.pem",
16 | "ca.cert.pem"
17 | ]
18 | }
19 | }
20 | }
21 | ]
22 | },
23 | "COPY"
24 | ]
25 | }
26 |
--------------------------------------------------------------------------------
/crossbar/webservice/__init__.py:
--------------------------------------------------------------------------------
1 | #####################################################################################
2 | #
3 | # Copyright (c) typedef int GmbH
4 | # SPDX-License-Identifier: EUPL-1.2
5 | #
6 | #####################################################################################
7 |
--------------------------------------------------------------------------------
/crossbar/webservice/templates/cb_lp_notice.html:
--------------------------------------------------------------------------------
1 | {% extends "cb_base.html" %}
2 |
3 | {% block content %}
4 |
5 |
6 | This is a WAMP-over-LongPoll transport endpoint on your Crossbar.io server.
7 |
8 | Applications talk to me speaking the WAMP-over-LongPoll protocol.
9 |
10 |
11 | If you are a human, this is likely not what you want to do;) Try here instead.
12 |
13 |
14 |
15 | Served for {{ peer }} from Crossbar.io node worker with PID {{ workerPid }}.
16 |
17 |
18 |
19 | {% endblock %}
20 |
--------------------------------------------------------------------------------
/crossbar/webservice/templates/cb_ws_status.html:
--------------------------------------------------------------------------------
1 | {% extends "cb_base.html" %}
2 |
3 | {% block content %}
4 |
5 |
6 | This is a WAMP-over-WebSocket transport endpoint on your Crossbar.io server.
7 |
8 | Applications talk to me speaking the WAMP-over-WebSocket protocol.
9 |
10 | {% if wsUri %}
11 |
12 | Clients connect using this WebSocket URL:
13 |
14 |
15 | {{ wsUri }}
16 |
17 | {% endif %}
18 |
19 | If you are a human, this is likely not what you want to do;) Try here instead.
20 |
21 |
22 |
23 | Served for from Crossbar.io router worker with PID {{ workerPid }}.
24 |
25 |
26 |
27 | {% endblock %}
28 |
--------------------------------------------------------------------------------
/crossbar/webservice/templates/cb_ws_testee_status.html:
--------------------------------------------------------------------------------
1 | {% extends "cb_base.html" %}
2 |
3 | {% block content %}
4 |
5 |
6 | This is a WebSocket Testee Endpoint of your Crossbar.io server.
7 | Clients talk to me speaking WebSocket by connecting to:
8 |
9 |
10 |
11 | {{ wsUri }}
12 |
13 |
14 |
15 | If you are a human, this is likely not what you want to do;) Try here instead.
16 |
17 |
18 |
19 | {% endblock %}
20 |
--------------------------------------------------------------------------------
/crossbar/webservice/templates/wamp_catalog_enum.html:
--------------------------------------------------------------------------------
1 | {% extends "wamp_catalog_base.html" %}
2 |
3 | {% block header %}
4 | {% endblock %}
5 |
6 | {% block content %}
7 | Enum
8 |
9 | {{ repo.basemodule }}
10 |
11 | {% endblock %}
12 |
--------------------------------------------------------------------------------
/crossbar/webservice/templates/wamp_catalog_home.html:
--------------------------------------------------------------------------------
1 | {% extends "wamp_catalog_base.html" %}
2 |
3 | {% block header %}
4 | {% endblock %}
5 |
6 | {% block content %}
7 | Home
8 | (created {{ created }})
9 |
10 | Schemas
11 |
12 | {% for schema in repo.schemas.values() %}
13 |
14 | {{ schema.file_name }}
15 |
16 | {% endfor %}
17 |
18 |
19 | Services
20 |
21 | {% for svc in repo.services.values() %}
22 |
23 | {{ svc.name }}
24 | {{ svc.docs }}
25 |
26 | {% endfor %}
27 |
28 |
29 | Tables and Structs
30 |
31 | {% for obj in repo.objs.values() %}
32 |
33 | {{ obj.name }}
34 | {{ obj.docs }}
35 |
36 | {% endfor %}
37 |
38 |
39 | Enumerations
40 |
41 | {% for enum in repo.enums.values() %}
42 |
43 | {{ enum.name }}
44 | {{ enum.docs }}
45 |
46 | {% endfor %}
47 |
48 |
49 | {% endblock %}
50 |
--------------------------------------------------------------------------------
/crossbar/webservice/templates/wamp_catalog_service.html:
--------------------------------------------------------------------------------
1 | {% extends "wamp_catalog_base.html" %}
2 |
3 | {% block header %}
4 | {% endblock %}
5 |
6 | {% block content %}
7 | Service
8 |
9 | {{ repo.basemodule }}
10 |
11 | {% endblock %}
12 |
--------------------------------------------------------------------------------
/crossbar/webservice/test/__init__.py:
--------------------------------------------------------------------------------
1 | #####################################################################################
2 | #
3 | # Copyright (c) typedef int GmbH
4 | # SPDX-License-Identifier: EUPL-1.2
5 | #
6 | #####################################################################################
7 |
--------------------------------------------------------------------------------
/crossbar/webservice/test/templates/greeting.html:
--------------------------------------------------------------------------------
1 |
2 | Greeting
3 |
4 | Greeting
5 |
6 | Hi {{ name }}! This is your personalized greeting message:
7 |
8 | {{ message }}
9 |
10 |
11 |
--------------------------------------------------------------------------------
/crossbar/webservice/test/templates/product_report.html:
--------------------------------------------------------------------------------
1 |
2 | Report
3 |
4 | Product Report
5 | This is a product report for product id: {{product_id}}
6 | Report is: {{report}}
7 | For month
{{month}} year
{{year}}
8 |
Flasky: {{flasky}}
9 |
10 |
11 |
--------------------------------------------------------------------------------
/crossbar/worker/sample/__init__.py:
--------------------------------------------------------------------------------
1 | #####################################################################################
2 | #
3 | # Copyright (c) typedef int GmbH
4 | # SPDX-License-Identifier: EUPL-1.2
5 | #
6 | #####################################################################################
7 |
8 | #
9 | # the imports here are important (though not used in CB unless configured),
10 | # because of single-exe packaging and pyinstaller otherwise missing deps
11 | #
12 |
13 | from crossbar.worker.sample._logging import LogTester # noqa
14 |
--------------------------------------------------------------------------------
/crossbar/worker/test/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/crossbar/worker/test/__init__.py
--------------------------------------------------------------------------------
/crossbar/worker/test/examples/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/crossbar/worker/test/examples/__init__.py
--------------------------------------------------------------------------------
/crossbar/worker/test/examples/badclass.py:
--------------------------------------------------------------------------------
1 | #####################################################################################
2 | #
3 | # Copyright (c) typedef int GmbH
4 | # SPDX-License-Identifier: EUPL-1.2
5 | #
6 | #####################################################################################
7 |
8 |
9 | class AppSession(object):
10 | def __init__(self, ignored):
11 | """
12 | A AppSession that doesn't descend from ApplicationSession.
13 | """
14 |
--------------------------------------------------------------------------------
/crossbar/worker/test/examples/goodclass.py:
--------------------------------------------------------------------------------
1 | #####################################################################################
2 | #
3 | # Copyright (c) typedef int GmbH
4 | # SPDX-License-Identifier: EUPL-1.2
5 | #
6 | #####################################################################################
7 |
8 | from autobahn.twisted.wamp import ApplicationSession
9 | from autobahn.wamp.types import PublishOptions
10 |
11 | from twisted.internet.defer import inlineCallbacks
12 |
13 | _ = []
14 |
15 |
16 | class AppSession(ApplicationSession):
17 | @inlineCallbacks
18 | def onJoin(self, details):
19 | yield self.subscribe(_.append, "com.test")
20 | yield self.publish("com.test", "woo", options=PublishOptions(exclude_me=False))
21 |
--------------------------------------------------------------------------------
/crossbar/worker/test/examples/importerror.py:
--------------------------------------------------------------------------------
1 | #####################################################################################
2 | #
3 | # Copyright (c) typedef int GmbH
4 | # SPDX-License-Identifier: EUPL-1.2
5 | #
6 | #####################################################################################
7 |
8 | import kjcbdkfbsdonfvspdmcsnofsn # noqa
9 |
--------------------------------------------------------------------------------
/crossbar/worker/test/examples/syntaxerror.py:
--------------------------------------------------------------------------------
1 | #####################################################################################
2 | #
3 | # Copyright (c) typedef int GmbH
4 | # SPDX-License-Identifier: EUPL-1.2
5 | #
6 | #####################################################################################
7 |
8 | class # noqa
9 |
--------------------------------------------------------------------------------
/deploy-docs.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | set +o verbose -o errexit
4 |
5 | export AWS_S3_BUCKET_NAME=crossbar.io
6 | export AWS_DEFAULT_REGION=eu-west-1
7 |
8 | echo 'building docs ..'
9 |
10 | tox -c tox.ini -e sphinx
11 |
12 | echo 'uploading docs to bucket "arn:aws:s3:::crossbar.io" ..'
13 |
14 | aws s3 cp --recursive --acl public-read ${HOME}/crossbar-docs s3://${AWS_S3_BUCKET_NAME}/docs
15 |
16 | echo ''
17 | echo 'docs ready at:'
18 | echo ''
19 | echo ' https://s3-eu-west-1.amazonaws.com/crossbar.io/docs/index.html'
20 | echo ''
21 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3'
2 | services:
3 | ganache:
4 | # https://github.com/trufflesuite/ganache-cli/issues/593
5 | # image: crossbario/crossbarfx-blockchain:latest
6 | image: trufflesuite/ganache-cli:v6.2.4
7 | # UID:GID => id -u, id -g
8 | # user: "1000:1000"
9 | # network_mode: host
10 | ports:
11 | - "1545:1545"
12 | volumes:
13 | # mount a data location from the host into the container - read-write
14 | - "${PWD}/test/ganache/.data:/ganache:rw"
15 | command:
16 | # https://github.com/trufflesuite/ganache-cli#using-ganache-cli
17 | - "--accounts"
18 | - "15"
19 | - "--defaultBalanceEther"
20 | - "1000"
21 | # - "--deterministic"
22 | - "--mnemonic"
23 | - "myth like bonus scare over problem client lizard pioneer submit female collect"
24 | - "--gasLimit"
25 | - "0xfffffffffff"
26 | - "--gasPrice"
27 | - "1"
28 | - "--port"
29 | - "1545"
30 | - "--networkId"
31 | - "5777"
32 | - "--db"
33 | - "/ganache"
34 |
--------------------------------------------------------------------------------
/docs-cfx/Documentation-License.rst:
--------------------------------------------------------------------------------
1 | :orphan:
2 |
3 | Crossbar.io Documentation License
4 | ====================================
5 |
6 | Copyright for the Crossbar.io Documentation (C) Crossbar.io Technologies GmbH.
7 | Licensed under the `Creative Commons CC BY-NC-ND 4.0 license
`__.
8 |
9 | "Crossbar.io", "WAMP" and "XBR" are trademarks of Crossbar.io Technologies GmbH.
10 |
11 | This license allows you to copy and redistribute the material in any medium or format as long as you
12 |
13 | 1. attribute the source,
14 | 2. the material remains unchanged and
15 | 3. it is not used for commercial purposes.
16 |
17 | Attribution details:
18 |
19 | (c) by Crossbar.io Technologies GmbH, material licensed under the
20 | CC-BY-NC-ND 4.0, provided as-is without any warranties.
21 |
22 | For more details (and the legally binding conditions), please see the `Creative Commons license page
`__.
23 |
24 | Note to Contributors to this documentation
25 | ------------------------------------------
26 |
27 | By contributing, you accept that the above license applies to your contribution.
28 |
--------------------------------------------------------------------------------
/docs-cfx/Makefile:
--------------------------------------------------------------------------------
1 | # Minimal makefile for Sphinx documentation
2 | #
3 |
4 | # You can set these variables from the command line.
5 | SPHINXOPTS =
6 | SPHINXBUILD = sphinx-build
7 | SPHINXPROJ = CrossbarioFabric
8 | SOURCEDIR = .
9 | BUILDDIR = _build
10 |
11 | # Put it first so that "make" without argument is like "make help".
12 | help:
13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14 |
15 | .PHONY: help Makefile
16 |
17 | # Catch-all target: route all unknown targets to Sphinx using the new
18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19 | %: Makefile
20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
--------------------------------------------------------------------------------
/docs-cfx/_static/cb-internal-architecture.odg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/cb-internal-architecture.odg
--------------------------------------------------------------------------------
/docs-cfx/_static/cb-internal-architecture.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/cb-internal-architecture.pdf
--------------------------------------------------------------------------------
/docs-cfx/_static/cf-scaleout-arch-diagram.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/cf-scaleout-arch-diagram.pdf
--------------------------------------------------------------------------------
/docs-cfx/_static/cf-scaleout-arch-diagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/cf-scaleout-arch-diagram.png
--------------------------------------------------------------------------------
/docs-cfx/_static/cf-scaleout-arch.odg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/cf-scaleout-arch.odg
--------------------------------------------------------------------------------
/docs-cfx/_static/cf-scaleout-arch.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/cf-scaleout-arch.pdf
--------------------------------------------------------------------------------
/docs-cfx/_static/cfc-oem-overview.odg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/cfc-oem-overview.odg
--------------------------------------------------------------------------------
/docs-cfx/_static/cfc-oem-overview.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/cfc-oem-overview.pdf
--------------------------------------------------------------------------------
/docs-cfx/_static/cfc-system-architecture.odg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/cfc-system-architecture.odg
--------------------------------------------------------------------------------
/docs-cfx/_static/cfc-system-architecture.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/cfc-system-architecture.pdf
--------------------------------------------------------------------------------
/docs-cfx/_static/cfc_database.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/cfc_database.png
--------------------------------------------------------------------------------
/docs-cfx/_static/cfx-clustering-elements.odg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/cfx-clustering-elements.odg
--------------------------------------------------------------------------------
/docs-cfx/_static/cfx-clustering-elements.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/cfx-clustering-elements.pdf
--------------------------------------------------------------------------------
/docs-cfx/_static/cfx_environment_variables.ods:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/cfx_environment_variables.ods
--------------------------------------------------------------------------------
/docs-cfx/_static/cfxdb_database_schema.ods:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/cfxdb_database_schema.ods
--------------------------------------------------------------------------------
/docs-cfx/_static/cfxdb_database_schema.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/cfxdb_database_schema.pdf
--------------------------------------------------------------------------------
/docs-cfx/_static/crossbar-api-namespaces.ods:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/crossbar-api-namespaces.ods
--------------------------------------------------------------------------------
/docs-cfx/_static/crossbar-api-namespaces.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/crossbar-api-namespaces.pdf
--------------------------------------------------------------------------------
/docs-cfx/_static/crossbar-rlinks.odg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/crossbar-rlinks.odg
--------------------------------------------------------------------------------
/docs-cfx/_static/crossbar-rlinks.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/crossbar-rlinks.pdf
--------------------------------------------------------------------------------
/docs-cfx/_static/crossbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/crossbar.png
--------------------------------------------------------------------------------
/docs-cfx/_static/crossbarfx-aggregator.odg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/crossbarfx-aggregator.odg
--------------------------------------------------------------------------------
/docs-cfx/_static/crossbarfx-aggregator.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/crossbarfx-aggregator.pdf
--------------------------------------------------------------------------------
/docs-cfx/_static/crossbarfx-central-control-plane.odg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/crossbarfx-central-control-plane.odg
--------------------------------------------------------------------------------
/docs-cfx/_static/crossbarfx-central-control-plane.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/crossbarfx-central-control-plane.pdf
--------------------------------------------------------------------------------
/docs-cfx/_static/crossbarfx-install-from-wheels.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | rm -f /tmp/*.whl
4 |
5 | curl -o /tmp/txaio-latest-py2.py3-none-any.whl https://crossbarbuilder.s3.eu-central-1.amazonaws.com/wheels/txaio-latest-py2.py3-none-any.whl
6 | curl -o /tmp/autobahn-latest-py2.py3-none-any.whl https://crossbarbuilder.s3.eu-central-1.amazonaws.com/wheels/autobahn-latest-py2.py3-none-any.whl
7 | curl -o /tmp/zlmdb-latest-py2.py3-none-any.whl https://crossbarbuilder.s3.eu-central-1.amazonaws.com/wheels/zlmdb-latest-py2.py3-none-any.whl
8 | curl -o /tmp/cfxdb-latest-py2.py3-none-any.whl https://crossbarbuilder.s3.eu-central-1.amazonaws.com/wheels/cfxdb-latest-py2.py3-none-any.whl
9 | curl -o /tmp/crossbar-latest-py2.py3-none-any.whl https://crossbarbuilder.s3.eu-central-1.amazonaws.com/wheels/crossbar-latest-py2.py3-none-any.whl
10 |
11 | pip install /tmp/txaio-latest-py2.py3-none-any.whl
12 | pip install /tmp/autobahn-latest-py2.py3-none-any.whl[all]
13 | pip install /tmp/zlmdb-latest-py2.py3-none-any.whl
14 | pip install /tmp/cfxdb-latest-py2.py3-none-any.whl
15 | pip install /tmp/crossbar-latest-py2.py3-none-any.whl
16 |
17 | which crossbar
18 |
19 | crossbar version
20 |
--------------------------------------------------------------------------------
/docs-cfx/_static/crossbarfx-network-architecture-2.odg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/crossbarfx-network-architecture-2.odg
--------------------------------------------------------------------------------
/docs-cfx/_static/crossbarfx-network-architecture-2.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/crossbarfx-network-architecture-2.pdf
--------------------------------------------------------------------------------
/docs-cfx/_static/crossbarfx-network-architecture.odg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/crossbarfx-network-architecture.odg
--------------------------------------------------------------------------------
/docs-cfx/_static/crossbarfx-network-architecture.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/crossbarfx-network-architecture.pdf
--------------------------------------------------------------------------------
/docs-cfx/_static/crossbarfx-xbr-layers.odg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/crossbarfx-xbr-layers.odg
--------------------------------------------------------------------------------
/docs-cfx/_static/crossbarfx-xbr-layers.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/crossbarfx-xbr-layers.pdf
--------------------------------------------------------------------------------
/docs-cfx/_static/crossbarfx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/crossbarfx.png
--------------------------------------------------------------------------------
/docs-cfx/_static/crossbarfx_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/crossbarfx_black.png
--------------------------------------------------------------------------------
/docs-cfx/_static/custom.css:
--------------------------------------------------------------------------------
1 | .wy-nav-content {
2 | max-width: 1050px;
3 | }
4 |
5 | /*
6 | .wy-nav-side {
7 | width: 400px !important;
8 | }
9 |
10 | .wy-menu-vertical {
11 | width: 400px !important;
12 | }
13 |
14 | .wy-menu-vertical {
15 | width: 400px !important;
16 | }
17 | */
18 |
--------------------------------------------------------------------------------
/docs-cfx/_static/onboarding/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/onboarding/1.png
--------------------------------------------------------------------------------
/docs-cfx/_static/onboarding/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/onboarding/2.png
--------------------------------------------------------------------------------
/docs-cfx/_static/onboarding/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/onboarding/3.png
--------------------------------------------------------------------------------
/docs-cfx/_static/onboarding/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/onboarding/4.png
--------------------------------------------------------------------------------
/docs-cfx/_static/onboarding/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/onboarding/5.png
--------------------------------------------------------------------------------
/docs-cfx/_static/onboarding/6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/onboarding/6.png
--------------------------------------------------------------------------------
/docs-cfx/_static/onboarding/7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/onboarding/7.png
--------------------------------------------------------------------------------
/docs-cfx/_static/router-worker-vmprof1.odg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/router-worker-vmprof1.odg
--------------------------------------------------------------------------------
/docs-cfx/_static/router-worker-vmprof1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/router-worker-vmprof1.pdf
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/accessing_crossbar_wamp_event_history_from_jupyter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/accessing_crossbar_wamp_event_history_from_jupyter.png
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/aggregating_crossbar_wamp_event_history_in_jupyter_on_cpython.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/aggregating_crossbar_wamp_event_history_in_jupyter_on_cpython.png
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/aggregating_crossbar_wamp_event_history_in_jupyter_on_pypy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/aggregating_crossbar_wamp_event_history_in_jupyter_on_pypy.png
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/aggregating_crossbar_wamp_event_history_in_jupyter_on_pypy_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/aggregating_crossbar_wamp_event_history_in_jupyter_on_pypy_2.png
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/benchmark_rpc_roundtrip_analyze_clients.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/benchmark_rpc_roundtrip_analyze_clients.png
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/benchmark_rpc_roundtrip_analyze_transports.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/benchmark_rpc_roundtrip_analyze_transports.png
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/benchmark_rpc_roundtrip_brummer1_load.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/benchmark_rpc_roundtrip_brummer1_load.png
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/benchmark_rpc_roundtrip_router_vmprof.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/benchmark_rpc_roundtrip_router_vmprof.png
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/benchmark_rpc_roundtrip_run.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/benchmark_rpc_roundtrip_run.png
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/cfx-process-structure-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/cfx-process-structure-1.png
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/cfx-process-structure-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/cfx-process-structure-2.png
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/cfx-shell-monitor-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/cfx-shell-monitor-1.png
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/cfx-webcluster-haproxy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/cfx-webcluster-haproxy.png
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/crossbar_on_snapcraft.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/crossbar_on_snapcraft.png
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/crossbar_pypy_on_snapcraft.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/crossbar_pypy_on_snapcraft.png
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/crossbar_wamp_calls_between_jupyter_notebooks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/crossbar_wamp_calls_between_jupyter_notebooks.png
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/crossbarfx_on_dockerhub.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/crossbarfx_on_dockerhub.png
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/crossbarfx_on_dockerhub_tags.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/crossbarfx_on_dockerhub_tags.png
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/crossbarfx_workbench_on_dockerhub.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/crossbarfx_workbench_on_dockerhub.png
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/jupyter_setup1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/jupyter_setup1.png
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/jupyter_setup2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/jupyter_setup2.png
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/tree-routing-from-node1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/tree-routing-from-node1.png
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/tree-routing-from-node2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/tree-routing-from-node2.png
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/tree-routing-from-node3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/tree-routing-from-node3.png
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/tree-routing-from-node4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/tree-routing-from-node4.png
--------------------------------------------------------------------------------
/docs-cfx/_static/screenshots/tree-routing-from-node5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/screenshots/tree-routing-from-node5.png
--------------------------------------------------------------------------------
/docs-cfx/_static/webscaling_bigbox_results.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/webscaling_bigbox_results.png
--------------------------------------------------------------------------------
/docs-cfx/_static/xbr-hardware-identity.odg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/xbr-hardware-identity.odg
--------------------------------------------------------------------------------
/docs-cfx/_static/xbr-hardware-identity.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/_static/xbr-hardware-identity.pdf
--------------------------------------------------------------------------------
/docs-cfx/contents.rst:
--------------------------------------------------------------------------------
1 | :tocdepth: 0
2 | :orphan:
3 |
4 | .. _site_contents:
5 |
6 | Contents
7 | ========
8 |
9 | This is the user reference documentation for Crossbar.io Fabric, the enterprise version of Crossbar.io.
10 |
11 | .. toctree::
12 | :includehidden:
13 | :maxdepth: 3
14 |
15 | index
16 | gettingstarted/index
17 | management/index
18 | scaling/index
19 | xbr/index
20 | dataplane/index
21 | security_hardening
22 | benchmarks
23 | legal/index
24 |
25 | Indices and tables
26 | ==================
27 |
28 | * :ref:`genindex`
29 | * :ref:`modindex`
30 | * :ref:`search`
31 |
--------------------------------------------------------------------------------
/docs-cfx/dataplane/analytics-architectures.rst:
--------------------------------------------------------------------------------
1 | Analytics Architectures
2 | =======================
3 |
4 | .. centered:: :download:`CrossbarFX Analytics Architectures `
5 |
--------------------------------------------------------------------------------
/docs-cfx/dataplane/eventsdb/analysis.rst:
--------------------------------------------------------------------------------
1 | Data Analysis
2 | =============
3 |
4 | This page describes analyzing WAMP events persisted in ZLMDB using the
5 | CrossbarFX Workbench, and from plain Python scripts.
6 |
7 | From Python
8 | -----------
9 |
10 | Installation
11 | ............
12 |
13 | .. code-block:: console
14 |
15 | pip install cfxdb
16 |
17 |
18 | From CrossbarFX Workbench
19 | -------------------------
20 |
21 | .. thumbnail:: /_static/screenshots/accessing_crossbar_wamp_event_history_from_jupyter.png
22 |
23 | .. thumbnail:: /_static/screenshots/aggregating_crossbar_wamp_event_history_in_jupyter_on_cpython.png
24 |
25 | .. thumbnail:: /_static/screenshots/aggregating_crossbar_wamp_event_history_in_jupyter_on_pypy.png
26 |
27 | .. thumbnail:: /_static/screenshots/crossbar_wamp_calls_between_jupyter_notebooks.png
28 |
--------------------------------------------------------------------------------
/docs-cfx/dataplane/eventsdb/index.rst:
--------------------------------------------------------------------------------
1 | WAMP Events Database
2 | ====================
3 |
4 | Crossbar.io (OSS) includes *event history* which allows a WAMP client to retrieve a set of past
5 | events for a subscription. Retrieval is by subscription ID, and for a set number of events.
6 |
7 | CrossbarFX includes *event store* which allows events routed on selected topics to be persisted to disk
8 | and queried over WAMP APIs or directly attaching the underlying *event store* to an application component
9 | for data analysis on the persisted event history.
10 |
11 | .. toctree::
12 | :maxdepth: 2
13 |
14 | overview
15 | analysis
16 |
--------------------------------------------------------------------------------
/docs-cfx/dataplane/zlmdb/export.rst:
--------------------------------------------------------------------------------
1 | Database Export
2 | ===============
3 |
4 | CrossbarFX will allow export of data persisted from a nodes embedded databases into
5 | flat files in **Apache Parquet** format, with optional deflate or snappy compression.
6 |
7 | Flat files are created in a file export area that must be accessible as a local
8 | filesystem on the node.
9 |
10 | Exported files in the file export area can be automatically uploaded and synchronized
11 | to a **blob store** (eg AWS S3) which can serve as the data source or storage of a
12 | Hadoop cluster for historical data analysis.
13 |
14 | Hadoop file format
15 | Apache Spark
16 |
17 | Apache Parquet
18 | https://parquet.apache.org/
19 |
20 |
21 | Apache Parquet provides a partitioned binary columnar serialization for data frames. It is designed to make reading
22 | and writing data frames efficient, and to make sharing data across data analysis languages easy. Parquet can use a
23 | variety of compression techniques to shrink the file size as much as possible while still maintaining good
24 | read performance.
25 |
26 | https://pandas.pydata.org/pandas-docs/version/0.21/io.html#io-parquet
27 | https://blog.cloudera.com/blog/2016/04/benchmarking-apache-parquet-the-allstate-experience/
28 |
--------------------------------------------------------------------------------
/docs-cfx/dataplane/zlmdb/index.rst:
--------------------------------------------------------------------------------
1 | ZLMDB
2 | =====
3 |
4 | .. toctree::
5 | :maxdepth: 2
6 |
7 | storage
8 | backup
9 | export
10 | fileformat
11 |
--------------------------------------------------------------------------------
/docs-cfx/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3'
2 | services:
3 |
4 | etcd1:
5 | image: quay.io/coreos/etcd:latest
6 | ports:
7 | - 2379
8 | - 2380
9 | volumes:
10 | - /usr/share/ca-certificates/:/etc/ssl/certs
11 | - ${PWD}/.etcd:/etcd-data
12 | network_mode: host
13 | command:
14 | - /usr/local/bin/etcd
15 | - --data-dir=/etcd-data
16 | - --advertise-client-urls
17 | - http://0.0.0.0:2379
18 | - --listen-client-urls
19 | - http://0.0.0.0:2379
20 | - --name
21 | - etcd1
22 |
23 | cfc1:
24 | depends_on:
25 | - etcd1
26 | image: crossbario/crossbar-fabric-center:latest
27 | environment:
28 | - MAILGUN_KEY
29 | ports:
30 | - 9000
31 | volumes:
32 | - ${PWD}/.cfc:/node
33 | network_mode: host
34 | entrypoint: /usr/local/bin/crossbar
35 | command:
36 | - start
37 | - --personality
38 | - fabriccenter
39 | - --loglevel
40 | - info
41 | - --cbdir
42 | - /node/.crossbar/
43 |
--------------------------------------------------------------------------------
/docs-cfx/gettingstarted/index.rst:
--------------------------------------------------------------------------------
1 | Getting Started
2 | ===============
3 |
4 | .. toctree::
5 | :maxdepth: 2
6 |
7 | intro
8 | using_docker
9 | using_exe
10 | using_snaps
11 | using_aws
12 | envvars
13 |
--------------------------------------------------------------------------------
/docs-cfx/gettingstarted/using_snaps.rst:
--------------------------------------------------------------------------------
1 | Using snaps
2 | ===========
3 |
4 | .. thumbnail:: /_static/screenshots/crossbar_on_snapcraft.png
5 |
6 | .. thumbnail:: /_static/screenshots/crossbar_pypy_on_snapcraft.png
7 |
--------------------------------------------------------------------------------
/docs-cfx/index.rst:
--------------------------------------------------------------------------------
1 | ../README.rst
--------------------------------------------------------------------------------
/docs-cfx/legal/index.rst:
--------------------------------------------------------------------------------
1 | Legal
2 | =====
3 |
4 | By using the Crossbar.io Fabric service or any of the software provided
5 | in conjunction with it, you agree to the terms and conditions laid out
6 | in the `Crossbar.io Fabric Alpha Test
7 | Agreement <../legal/Crossbar_Fabric_Alpha_Test_Agreement.pdf>`__.
8 |
9 | Unless specifically stated otherwise, all software provided in
10 | connection with Crossbar.io Fabric is distributed under a commercial
11 | license.
12 |
13 | Licenses for the Crossbar.io Fabric router and the Crossbar.io Fabric
14 | Shell are granted to any legal user of the Crossbar.io Fabric service.
15 | The company behind Crossbar.io Fabric, Crossbar.io GmbH (a German
16 | limited company), which has been funding the development of the open
17 | source Crossbar.io router, hold the necessary rights to dual-license the
18 | Crossbar.io code for the Crossbar.io Fabric router (which is an extended
19 | version of the open source software).
20 |
21 | .. toctree::
22 | :maxdepth: 2
23 |
24 | api_licenses
25 | oss_licenses
26 |
--------------------------------------------------------------------------------
/docs-cfx/legal/oss_licenses.rst:
--------------------------------------------------------------------------------
1 | Open-source Licenses
2 | ====================
3 |
4 | CrossbarFX builds on the following Opne-source software projects:
5 |
6 | .. include:: oss_licenses_table.rst
7 |
--------------------------------------------------------------------------------
/docs-cfx/management/index.rst:
--------------------------------------------------------------------------------
1 | Management
2 | ==========
3 |
4 | .. toctree::
5 | :maxdepth: 2
6 |
7 | introduction
8 | domain/domain-config
9 | domain/domain-api
10 | mrealm-api/index
11 | remote-node-api
12 | zlmdb
13 |
--------------------------------------------------------------------------------
/docs-cfx/management/zlmdb.rst:
--------------------------------------------------------------------------------
1 | zLMDB Tables
2 | ============
3 |
4 | .. autoclass:: zlmdb.MapStringUuid
5 |
6 | .. autoclass:: zlmdb.MapUuidCbor
7 |
8 | .. autoclass:: zlmdb.MapUuidUuidCbor
9 |
10 | .. autoclass:: zlmdb.MapUuidStringUuid
11 |
12 | .. autoclass:: zlmdb.MapTimestampUuidFlatBuffers
13 |
14 | .. autoclass:: zlmdb.MapSlotUuidUuid
15 |
16 | .. autoclass:: zlmdb.MapTimestampUuidFlatBuffers
17 |
18 | .. autoclass:: zlmdb.MapTimestampUuidStringFlatBuffers
19 |
--------------------------------------------------------------------------------
/docs-cfx/readthedocs-environment.yml:
--------------------------------------------------------------------------------
1 | channels:
2 | - conda-forge
3 | dependencies:
4 | - python==3.6
5 | - sphinx
6 | - pandoc
7 | - nbconvert
8 | - ipykernel
9 | - pip:
10 | - sphinx_rtd_theme
11 |
--------------------------------------------------------------------------------
/docs-cfx/scaling/index.rst:
--------------------------------------------------------------------------------
1 | Scaling and High-Availability
2 | =============================
3 |
4 | Read about the elements of Crossbar.io that enables multi-node clusters of nodes:
5 |
6 | .. toctree::
7 | :maxdepth: 2
8 |
9 | introduction
10 | arealms
11 | routerclusters
12 | webclusters
13 | examples
14 |
--------------------------------------------------------------------------------
/docs-cfx/work/architecture.rst:
--------------------------------------------------------------------------------
1 | Architecture
2 | ============
3 |
4 | Crossbar.io has a multi-process (worker) architecture that allows to scale up (and out) of stateless
5 | Web services (`full report
`_):
6 |
7 | .. figure:: /_static/webscaling_bigbox_results.png
8 | :align: center
9 | :alt: CrossbarFX Web scaling
10 | :figclass: align-center
11 |
12 | CrossbarFX: scaling Web worloads from 1-40 cores
13 |
14 | However, this only allows to run stateless Web services, not full blown WAMP routers and realms,
15 | and it is also hard to manage as keeping all the node configuration files in sync (to serve the same
16 | scale-out set of Web services) and everything up and running manually is time consuming and error prone.
17 |
18 | CrossbarFX addresses both problems, as it allows to scale up and out WAMP routing workloads and provides
19 | auto-managing of all resources in a whole cluster from a single point of management.
20 |
21 | .. figure:: /_static/crossbarfx-network-architecture.svg
22 | :align: center
23 | :alt: CrossbarFX network architecture
24 | :figclass: align-center
25 |
26 | Network architecture in a full setup
27 |
28 |
29 | .. centered:: :download:`CrossbarFX Analytics Architectures `
30 |
31 |
--------------------------------------------------------------------------------
/docs-cfx/work/kubernetes/docker-edge/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM ubuntu
2 | RUN apt-get update
3 | RUN apt-get install -y curl
4 | COPY .crossbar /
5 | COPY crossbarfx /
6 | RUN chmod a+x /crossbarfx
7 | ENTRYPOINT ["./crossbarfx", "edge", "start"]
8 |
--------------------------------------------------------------------------------
/docs-cfx/work/kubernetes/docker-edge/web/README.md:
--------------------------------------------------------------------------------
1 | Put your Web files here.
--------------------------------------------------------------------------------
/docs-cfx/work/kubernetes/docker-edge/web/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Open JavaScript console to watch log output (hit F12)
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/docs-cfx/work/kubernetes/docker-master/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM ubuntu
2 | RUN apt-get update
3 | RUN apt-get install -y curl
4 | RUN mkdir /.crossbar
5 | COPY crossbarfx /
6 | COPY crossbarfx-ui.zip /.crossbar/.crossbarfx-ui.zip
7 | RUN chmod a+x crossbarfx
8 | EXPOSE 443
9 | ENTRYPOINT ["./crossbarfx", "master", "start"]
10 |
--------------------------------------------------------------------------------
/docs-cfx/work/kubernetes/edge/Chart.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | appVersion: "1.0"
3 | description: A Helm chart to provision a Crossbar Edge Node
4 | name: edge
5 | home: https://github.com/crossbario/crossbarfx
6 | version: 0.1.0
7 | details:
8 | Helm chart to install the Crossbar FX as an edge node on K8
--------------------------------------------------------------------------------
/docs-cfx/work/kubernetes/edge/templates/_helpers.tpl:
--------------------------------------------------------------------------------
1 | {{/* vim: set filetype=mustache: */}}
2 | {{/*
3 | Expand the name of the chart.
4 | */}}
5 | {{- define "crossbar-cfc.name" -}}
6 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
7 | {{- end -}}
8 |
9 | {{/*
10 | Create a default fully qualified app name.
11 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
12 | If release name contains chart name it will be used as a full name.
13 | */}}
14 | {{- define "crossbar-cfc.fullname" -}}
15 | {{- if .Values.fullnameOverride -}}
16 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
17 | {{- else -}}
18 | {{- $name := default .Chart.Name .Values.nameOverride -}}
19 | {{- if contains $name .Release.Name -}}
20 | {{- .Release.Name | trunc 63 | trimSuffix "-" -}}
21 | {{- else -}}
22 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
23 | {{- end -}}
24 | {{- end -}}
25 | {{- end -}}
26 |
27 | {{/*
28 | Create chart name and version as used by the chart label.
29 | */}}
30 | {{- define "crossbar-cfc.chart" -}}
31 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
32 | {{- end -}}
33 |
--------------------------------------------------------------------------------
/docs-cfx/work/kubernetes/edge/templates/ingress.yaml:
--------------------------------------------------------------------------------
1 | {{- if .Values.ingress.enabled -}}
2 | {{- $fullName := include "crossbar-cfc.fullname" . -}}
3 | {{- $ingressPath := .Values.ingress.path -}}
4 | apiVersion: extensions/v1beta1
5 | kind: Ingress
6 | metadata:
7 | name: {{ $fullName }}
8 | labels:
9 | app: {{ template "crossbar-cfc.name" . }}
10 | chart: {{ template "crossbar-cfc.chart" . }}
11 | release: {{ .Release.Name }}
12 | heritage: {{ .Release.Service }}
13 | {{- with .Values.ingress.annotations }}
14 | annotations:
15 | {{ toYaml . | indent 4 }}
16 | {{- end }}
17 | spec:
18 | {{- if .Values.ingress.tls }}
19 | tls:
20 | {{- range .Values.ingress.tls }}
21 | - hosts:
22 | {{- range .hosts }}
23 | - {{ . }}
24 | {{- end }}
25 | secretName: {{ .secretName }}
26 | {{- end }}
27 | {{- end }}
28 | rules:
29 | {{- range .Values.ingress.hosts }}
30 | - host: {{ . }}
31 | http:
32 | paths:
33 | - path: {{ $ingressPath }}
34 | backend:
35 | serviceName: {{ $fullName }}
36 | servicePort: http
37 | {{- end }}
38 | {{- end }}
39 |
--------------------------------------------------------------------------------
/docs-cfx/work/kubernetes/edge/templates/service.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | name: {{ template "crossbar-cfc.fullname" . }}
5 | labels:
6 | app: {{ template "crossbar-cfc.name" . }}
7 | chart: {{ template "crossbar-cfc.chart" . }}
8 | release: {{ .Release.Name }}
9 | heritage: {{ .Release.Service }}
10 | spec:
11 | type: {{ .Values.service.type }}
12 | ports:
13 | - port: {{ .Values.service.port }}
14 | targetPort: http
15 | protocol: TCP
16 | name: http
17 | selector:
18 | app: {{ template "crossbar-cfc.name" . }}
19 | release: {{ .Release.Name }}
20 |
--------------------------------------------------------------------------------
/docs-cfx/work/kubernetes/edge/values.yaml:
--------------------------------------------------------------------------------
1 | # Default values for crossbar-cfc (YAML)
2 |
3 | replicaCount: 2
4 |
5 | image:
6 | repository: IMAGE_REPO_REQUIRED
7 | tag: latest
8 | pullPolicy: Always
9 |
10 | service:
11 | type: LoadBalancer
12 | port: 8080
13 |
14 | etcd:
15 | host: cfc-etcd
16 |
17 | mailgun:
18 | key: MAILGUN_KEY_REQUIRED
19 | url: MAILGUN_URL_REQUIRED
20 | from: MAILGUN_FROM_REQUIRED
21 |
22 | ingress:
23 | enabled: false
24 | annotations: {}
25 | path: /
26 | hosts:
27 | - cfc.local
28 | tls: []
29 |
30 | resources: {}
31 |
32 | nodeSelector: {}
33 |
34 | tolerations: []
35 |
36 | affinity: {}
37 |
--------------------------------------------------------------------------------
/docs-cfx/work/kubernetes/index.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | entries:
3 | edge:
4 | - apiVersion: v1
5 | appVersion: "1.0"
6 | created: 2018-08-07T17:38:10.169741336+01:00
7 | description: A Helm chart to provision a Crossbar Edge Node
8 | digest: 986b9e7e98de9ddb80780fb5c48de6a2d40d06daf19e54abd56ce7f0144f2f1b
9 | home: https://github.com/crossbario/crossbarfx
10 | name: edge
11 | urls:
12 | - edge-0.1.0.tgz
13 | version: 0.1.0
14 | master:
15 | - apiVersion: v1
16 | appVersion: "1.0"
17 | created: 2018-08-07T17:38:10.170435076+01:00
18 | description: A Helm chart to provision Crossbar Fabric Controller
19 | digest: 8f71c6679fb4e4a98ea7a857b28ac2e4ea63483a97444608197d94362a89c83b
20 | home: https://github.com/crossbario/crossbarfx
21 | name: master
22 | urls:
23 | - master-0.1.0.tgz
24 | version: 0.1.0
25 | generated: 2018-08-07T17:38:10.168751756+01:00
26 |
--------------------------------------------------------------------------------
/docs-cfx/work/kubernetes/master/.helmignore:
--------------------------------------------------------------------------------
1 | # Patterns to ignore when building packages.
2 | # This supports shell glob matching, relative path matching, and
3 | # negation (prefixed with !). Only one pattern per line.
4 | .DS_Store
5 | # Common VCS dirs
6 | .git/
7 | .gitignore
8 | .bzr/
9 | .bzrignore
10 | .hg/
11 | .hgignore
12 | .svn/
13 | # Common backup files
14 | *.swp
15 | *.bak
16 | *.tmp
17 | *~
18 | # Various IDEs
19 | .project
20 | .idea/
21 | *.tmproj
22 |
--------------------------------------------------------------------------------
/docs-cfx/work/kubernetes/master/Chart.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | appVersion: "1.0"
3 | description: A Helm chart to provision Crossbar Fabric Controller
4 | name: master
5 | home: https://github.com/crossbario/crossbarfx
6 | version: 0.1.0
7 | details:
8 | Helm chart to install the Crossbar Fabric Controller executable
9 | on a Kubernetes
10 |
--------------------------------------------------------------------------------
/docs-cfx/work/kubernetes/master/scripts/etcd.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: "etcd.database.coreos.com/v1beta2"
2 | kind: "EtcdCluster"
3 | metadata:
4 | name: "cfc-etcd"
5 | spec:
6 | size: 3
7 |
--------------------------------------------------------------------------------
/docs-cfx/work/kubernetes/master/templates/_helpers.tpl:
--------------------------------------------------------------------------------
1 | {{/* vim: set filetype=mustache: */}}
2 | {{/*
3 | Expand the name of the chart.
4 | */}}
5 | {{- define "crossbar-cfc.name" -}}
6 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
7 | {{- end -}}
8 |
9 | {{/*
10 | Create a default fully qualified app name.
11 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
12 | If release name contains chart name it will be used as a full name.
13 | */}}
14 | {{- define "crossbar-cfc.fullname" -}}
15 | {{- if .Values.fullnameOverride -}}
16 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
17 | {{- else -}}
18 | {{- $name := default .Chart.Name .Values.nameOverride -}}
19 | {{- if contains $name .Release.Name -}}
20 | {{- .Release.Name | trunc 63 | trimSuffix "-" -}}
21 | {{- else -}}
22 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
23 | {{- end -}}
24 | {{- end -}}
25 | {{- end -}}
26 |
27 | {{/*
28 | Create chart name and version as used by the chart label.
29 | */}}
30 | {{- define "crossbar-cfc.chart" -}}
31 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
32 | {{- end -}}
33 |
--------------------------------------------------------------------------------
/docs-cfx/work/kubernetes/master/templates/ingress.yaml:
--------------------------------------------------------------------------------
1 | {{- if .Values.ingress.enabled -}}
2 | {{- $fullName := include "crossbar-cfc.fullname" . -}}
3 | {{- $ingressPath := .Values.ingress.path -}}
4 | apiVersion: extensions/v1beta1
5 | kind: Ingress
6 | metadata:
7 | name: {{ $fullName }}
8 | labels:
9 | app: {{ template "crossbar-cfc.name" . }}
10 | chart: {{ template "crossbar-cfc.chart" . }}
11 | release: {{ .Release.Name }}
12 | heritage: {{ .Release.Service }}
13 | {{- with .Values.ingress.annotations }}
14 | annotations:
15 | {{ toYaml . | indent 4 }}
16 | {{- end }}
17 | spec:
18 | {{- if .Values.ingress.tls }}
19 | tls:
20 | {{- range .Values.ingress.tls }}
21 | - hosts:
22 | {{- range .hosts }}
23 | - {{ . }}
24 | {{- end }}
25 | secretName: {{ .secretName }}
26 | {{- end }}
27 | {{- end }}
28 | rules:
29 | {{- range .Values.ingress.hosts }}
30 | - host: {{ . }}
31 | http:
32 | paths:
33 | - path: {{ $ingressPath }}
34 | backend:
35 | serviceName: {{ $fullName }}
36 | servicePort: http
37 | {{- end }}
38 | {{- end }}
39 |
--------------------------------------------------------------------------------
/docs-cfx/work/kubernetes/master/templates/service.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Service
3 | metadata:
4 | name: {{ template "crossbar-cfc.fullname" . }}
5 | labels:
6 | app: {{ template "crossbar-cfc.name" . }}
7 | chart: {{ template "crossbar-cfc.chart" . }}
8 | release: {{ .Release.Name }}
9 | heritage: {{ .Release.Service }}
10 | spec:
11 | type: {{ .Values.service.type }}
12 | ports:
13 | - port: {{ .Values.service.port }}
14 | targetPort: http
15 | protocol: TCP
16 | name: http
17 | selector:
18 | app: {{ template "crossbar-cfc.name" . }}
19 | release: {{ .Release.Name }}
20 |
--------------------------------------------------------------------------------
/docs-cfx/work/kubernetes/master/values.yaml:
--------------------------------------------------------------------------------
1 | # Default values for crossbar-cfc (YAML)
2 |
3 | replicaCount: 1
4 |
5 | image:
6 | repository: IMAGE_REPO_REQUIRED
7 | tag: latest
8 | pullPolicy: Always
9 |
10 | service:
11 | type: LoadBalancer
12 | port: 9000
13 |
14 | etcd:
15 | host: cfc-etcd
16 |
17 | mailgun:
18 | key: MAILGUN_KEY_REQUIRED
19 | url: MAILGUN_URL_REQUIRED
20 | from: MAILGUN_FROM_REQUIRED
21 |
22 | ingress:
23 | enabled: false
24 | annotations: {}
25 | path: /
26 | hosts:
27 | - cfc.local
28 | tls: []
29 |
30 | resources: {}
31 |
32 | nodeSelector: {}
33 |
34 | tolerations: []
35 |
36 | affinity: {}
37 |
--------------------------------------------------------------------------------
/docs-cfx/work/kubernetes/yaml/etcd.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: "etcd.database.coreos.com/v1beta2"
2 | kind: "EtcdCluster"
3 | metadata:
4 | name: "cfc-etcd"
5 | spec:
6 | size: 3
7 |
--------------------------------------------------------------------------------
/docs-cfx/work/xbr/index.rst:
--------------------------------------------------------------------------------
1 | XBR Data Markets
2 | ================
3 |
4 | **XBR Open data markets platform - Enabling digital value chains.**
5 |
6 | --------------
7 |
8 |
9 | .. toctree::
10 | :maxdepth: 2
11 | :caption: Contents
12 |
13 | introduction.rst
14 | roles.rst
15 | interfaces.rst
16 | services.rst
17 | business.rst
18 |
--------------------------------------------------------------------------------
/docs-cfx/work/xbr/xbr_data_token_flow.asciio:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/work/xbr/xbr_data_token_flow.asciio
--------------------------------------------------------------------------------
/docs-cfx/work/xbr/xbr_on_chain_transactions.asciio:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs-cfx/work/xbr/xbr_on_chain_transactions.asciio
--------------------------------------------------------------------------------
/docs-cfx/xbr/network-onboarding.rst:
--------------------------------------------------------------------------------
1 | On-boarding
2 | ===========
3 |
4 | .. thumbnail:: /_static/onboarding/1.png
5 |
6 | .. thumbnail:: /_static/onboarding/2.png
7 |
8 | .. thumbnail:: /_static/onboarding/3.png
9 |
10 | .. thumbnail:: /_static/onboarding/4.png
11 |
12 | .. thumbnail:: /_static/onboarding/5.png
13 |
14 | .. thumbnail:: /_static/onboarding/6.png
15 |
--------------------------------------------------------------------------------
/docs-old/pages/Documentation.md:
--------------------------------------------------------------------------------
1 | title: Documentation
2 | toc: [Documentation]
3 |
4 | # Crossbar.io Documentation
5 |
6 | Welcome to the Crossbar.io Reference Documentation.
7 |
8 | * [Table of Contents](Table of Contents).
9 |
10 | ## Introduction
11 |
12 | * [Getting Started](Getting Started)
13 |
14 | ## Administrators
15 |
16 | * [Basic Concepts](Basic Concepts)
17 | * [Installation](Installation)
18 | * [Administration](Administration)
19 |
20 | ## Programmers
21 |
22 | * [Programming Guide](Programming Guide)
23 | * [Examples](Examples)
24 |
25 | ## More
26 |
27 | * [Compatibility Policy](Compatibility-Policy)
28 | * [Crossbar.io Code License](Crossbar-License)
29 | * [Crossbar.io Documentation License](Documentation-License)
30 | * [Contributing to the Project](https://github.com/crossbario/crossbar/blob/master/CONTRIBUTING.md)
31 | * [Contributing FAQ](Contributing FAQ)
32 | * [FAQ](FAQ)
33 |
34 | > This documentation is an open-source community effort sponsored by [Crossbar.io GmbH](http://crossbario.com). Should you find errors or if you have suggestions, please file a doc issue [here](https://github.com/crossbario/crossbar/issues/new).
35 |
--------------------------------------------------------------------------------
/docs-old/pages/about/Documentation-License.md:
--------------------------------------------------------------------------------
1 | title: Crossbar.io Documentation License
2 | toc: [Documentation, Documentation License]
3 |
4 | # Crossbar.io Documentation License
5 |
6 | Copyright for the Crossbar.io documentation (C) Crossbar.io Technologies GmbH.
7 | Licensed under the Creative Commons [CC-BY-SA 4.0 license](https://creativecommons.org/licenses/by-sa/4.0/).
8 |
9 | "WAMP" and "Crossbar.io" are trademarks of Crossbar.io Technologies GmbH.
10 |
11 | This license allows you to use the material in this documentation, whole or in parts, in its present form or adapted, and for any purpose (including commercial use), as long as you
12 |
13 | * attribute the material to us giving the information provided below and
14 | * share the material under this same license
15 |
16 | For more details (and the legally binding conditions) see the [Creative Commons license page](https://creativecommons.org/licenses/by-sa/4.0/#) for this license.
17 |
18 | Attribution details:
19 |
20 | (c) by Crossbar.io Technologies GmbH, material licensed under the CC-BY-SA 4.0, provided as-is without any warranties, [Crossbar.io documentation wiki](https://github.com/crossbario/crossbar/wiki)
21 |
22 | ## Note to Contributors to this documentation
23 |
24 | By contributing, you accept that the above license applies to your contribution.
25 |
--------------------------------------------------------------------------------
/docs-old/pages/administration/production/Going-to-Production.md:
--------------------------------------------------------------------------------
1 | title: Going to Production
2 | toc: [Documentation, Administration, Going to Production]
3 |
4 | # Going to Production
5 |
6 | This section covers security issues and fine-tuning of advanced options. Tips for a performant and secure production configuration.
7 |
8 | * [Running on privileged ports](Running on Privileged Ports)
9 | * [Secure WebSocket and HTTPS](Secure WebSocket and HTTPS)
10 | * [TLS Certificates](TLS Certificates)
11 | * [Automatic startup and restart](Automatic Startup and Restart)
12 | * [Network Tuning](Network Tuning)
13 | * [Reverse Proxies](Reverse Proxies)
14 | * [SSL/TLS Interception Proxies](SSL-TLS-Interception-Proxies)
15 |
16 | Testing your instance & browser support.
17 |
18 | * [Browser Support](Browser Support)
19 | * [WebSocket Compliance Testing](WebSocket Compliance Testing)
20 | * [Stream Testee](Stream Testee)
21 |
--------------------------------------------------------------------------------
/docs-old/pages/administration/production/Reverse-Proxies.md:
--------------------------------------------------------------------------------
1 | title: Reverse Proxies
2 | toc: [Documentation, Administration, Going to Production, Reverse Proxies]
3 |
4 | # Reverse Proxies
5 |
6 | Running Crossbar.io behind [reverse proxies](http://en.wikipedia.org/wiki/Reverse_proxy).
7 |
8 | ## HAProxy
9 |
10 | Write me.
11 |
12 | ## Nginx
13 |
14 | Write me. You can find some Nginx examples and hints [here](https://github.com/nicokaiser/nginx-websocket-proxy).
15 |
16 | Note also that nginx's default timeout is 60 seconds; use `proxy_read_timeout` option to increase this.
17 |
18 | ## Apache
19 |
20 | Apache supports proxying WebSocket connections using [mod_proxy_wstunnel](http://httpd.apache.org/docs/2.4/mod/mod_proxy_wstunnel.html).
21 |
--------------------------------------------------------------------------------
/docs-old/pages/administration/production/Security.md:
--------------------------------------------------------------------------------
1 | title: Security
2 | toc: [Documentation, Administration, Going to Production, Security]
3 |
4 | # Security
5 |
6 | ## References
7 |
8 | * [A New Approach to IoT Security](http://www.pubnub.com/static/papers/IoT_Security_Whitepaper_Final.pdf)
9 | * [Inside-Out Security for the IoT](https://www.altera.com/solutions/technology/system-design/articles/_2014/security-iot.smartphone.highResolutionDisplay.html)
10 | * [TUV SUD IoT Honeynet Project (in German)](http://www.tuev-sued.de/tuev-sued-konzern/presse/pressemeldungen/potenzielle-angreifer-sind-ueberall)
--------------------------------------------------------------------------------
/docs-old/pages/administration/web-service/Resource-Service.md:
--------------------------------------------------------------------------------
1 | title: Resource Service
2 | toc: [Documentation, Administration, Web Services, Resource Service]
3 |
4 | # Resource Service
5 |
6 | Allows to hook any Twisted Web resource into the service tree.
7 |
8 | ## Configuration
9 |
10 | To configure a Resource Service, attach a dictionary element to a path in your [Web transport](Web Transport and Services):
11 |
12 | attribute | description
13 | ---|---
14 | **`type`** | Must be `"resource"`.
15 | **`classname`** | Fully qualified Python class of the Twisted Web resource to expose.
16 | **`extra`** | Arbitrary extra data provided to the constructor of the Twisted Web resource.
17 |
18 | ## Example
19 |
20 | Write me.
--------------------------------------------------------------------------------
/docs-old/pages/administration/web-service/Reverse-Proxy-Service.md:
--------------------------------------------------------------------------------
1 | title: Reverse Proxy Service
2 | toc: [Documentation, Administration, Web Services, Reverse Proxy Service]
3 |
4 | # Reverse Proxy Service
5 |
6 | ## Configuration
7 |
8 | To configure a Web Reverse Proxy Service, attach a dictionary element to a path in your [Web transport](Web Transport and Services):
9 |
10 | option | description
11 | ---|---
12 | **`type`** | must be `"reverseproxy"`
13 | **`host`** | the host of the web server to proxy, e.g. `"www.example.com"`.
14 | **`port`** | the port of the web server to proxy (default: `80`)
15 | **`path`** | the base path to fetch data from with no trailing slashes (default: `""`)
16 |
17 | ## Example
18 |
19 | Here is how you define a **Web Transport** that do reverse proxy to `example.com/my_path`:
20 |
21 | ```javascript
22 | {
23 | "type": "web",
24 | "endpoint": {
25 | "type": "tcp",
26 | "port": 80
27 | },
28 | "paths": {
29 | "/": {
30 | "type": "reverseproxy",
31 | "host": "example.com",
32 | "path": "/my_path"
33 | }
34 | }
35 | }
36 | ```
37 | > In this example, an incoming request `POST /login` would be proxied to domain `example.com` as `POST /my_path/login`
38 |
39 | ---
--------------------------------------------------------------------------------
/docs-old/pages/programming-guide/Programming.md:
--------------------------------------------------------------------------------
1 | title: Programming Guide
2 | toc: [Documentation, Programming]
3 |
4 | The following are language specific guides for application developers working with Crossbar.io.
5 |
6 | * WAMP Programming
7 | - [WAMP Programming in Python](http://autobahn.ws/python/wamp/programming.html)
8 | - [WAMP Programming in JavaScript](http://autobahn.ws/js/programming.html)
9 | * Writing Application Components
10 | - [HTML5 Application Components](HTML5 Application Components)
11 | - [Node.js Application Components](Node.js Application Components)
12 | - [Python Application Components](Python Application Components)
13 | * Advanced Topics
14 | - [Database Programming with PostgreSQL](Database Programming with PostgreSQL)
15 | - [Session Meta Events and Procedures](Session Metaevents and Procedures)
16 | - [[AngularJS Application Components]]
17 | * [Starting and Stopping Crossbar.io](Starting and Stopping Crossbario)
18 |
--------------------------------------------------------------------------------
/docs-old/pages/programming-guide/pubsub/PubSub.md:
--------------------------------------------------------------------------------
1 | title: Publish & Subscribe
2 | toc: [Documentation, Programming Guide, PubSub]
3 |
4 | # Overview
5 |
6 | See the following pages
7 |
8 | * [[How Subscriptions Work]]
9 | * [[Basic Subscriptions]]
10 | * [[Pattern Based Subscriptions]]
11 | * [[Publisher Identification]]
12 | * [[Publisher Exclusion]]
13 | * [[Subscriber Black and Whitelisting]]
14 | * [[Event History]]
15 | * [[Retained Events]]
16 | * [[Subscription Meta Events and Procedures]]
17 |
--------------------------------------------------------------------------------
/docs-old/pages/programming-guide/pubsub/Retained-Events.md:
--------------------------------------------------------------------------------
1 | title: Retained Events
2 | toc: [Documentation, Programming Guide, Retained Events]
3 |
4 | # Retained Events
5 |
6 | When publishing an event, the publisher can set an option (`retain=True`) in the `PublishOptions` which will cause the Broker to retain the even being published as the most-recent event on this topic.
7 |
8 | Note that [[Event History]] is similar to this feature, but not the same.
9 |
10 | No configuration is required in Crossbar in order to take advantage of this; it is up to the publisher.
11 |
12 | # Retrieving an Event
13 |
14 | Upon subscription, a client can pass `get_retained=True` in the `SubscribeOptions`. If there is any retained event, it will be immediately sent to the subscriber.
15 |
16 | # Example
17 |
18 | There is a completely-worked example [in the Autobahn-Python repository](https://github.com/crossbario/autobahn-python/tree/master/examples/twisted/wamp/pubsub).
19 |
--------------------------------------------------------------------------------
/docs-old/pages/programming-guide/rpc/RPC.md:
--------------------------------------------------------------------------------
1 | title: Remote Procedure Calls
2 | toc: [Documentation, Programming Guide, RPC]
3 |
4 | # Overview
5 |
6 | See the following pages
7 |
8 | * [[How Registrations Work]]
9 | * [[Basic Registrations]]
10 | * [[Registration Options]]
11 | * [[Pattern Based Registrations]]
12 | * [[Caller Identification]]
13 | * [[Shared Registrations]]
14 | * [[Progressive Call Results]]
15 | * [[Registration Meta Events and Procedures]]
16 |
--------------------------------------------------------------------------------
/docs-old/static/site.css:
--------------------------------------------------------------------------------
1 | body {
2 | font-family: sans-serif;
3 | }
4 |
5 | #contents {
6 | width: 960px;
7 | margin: auto;
8 | }
--------------------------------------------------------------------------------
/docs-old/templates/changelog_preamble.md:
--------------------------------------------------------------------------------
1 | title: ChangeLog
2 | toc: [Documentation, Programming Guide, ChangeLog]
3 |
4 |
5 |
--------------------------------------------------------------------------------
/docs-old/templates/index.html:
--------------------------------------------------------------------------------
1 | {% extends "layout.html" %}
2 |
3 | {% block main %}
4 | Crossbar.io Docs [DEV]
5 |
6 | This is the development version of the Crossbar.io Documentation .
7 |
8 |
9 | The contents here is exactly the same as deployed on http://crossbar.io/docs/ , but without styling and embedding into the larger Crossbar.io web site.
10 |
11 | {% endblock %}
12 |
--------------------------------------------------------------------------------
/docs-old/templates/layout.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Crossbar.io Docs
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | {% block main %}{% endblock %}
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/docs-old/templates/page.html:
--------------------------------------------------------------------------------
1 | {% extends "layout.html" %}
2 |
3 | {% block main %}
4 |
5 | HOME
6 |
7 |
8 |
9 |
10 | {{ title }}
11 | {{ contents|safe }}
12 |
13 |
14 |
15 | {% if last_commit %}
16 | Last edit by {{ last_commit }}
17 | {% endif %}
18 | {% endblock %}
19 |
--------------------------------------------------------------------------------
/docs/Documentation-License.rst:
--------------------------------------------------------------------------------
1 | :orphan:
2 |
3 | Crossbar.io Documentation License
4 | =================================
5 |
6 | Copyright for the Crossbar.io documentation (C) Crossbar.io Technologies
7 | GmbH. Licensed under the Creative Commons `CC-BY-SA 4.0
8 | license `__.
9 |
10 | "WAMP" and "Crossbar.io" are trademarks of Crossbar.io Technologies
11 | GmbH.
12 |
13 | This license allows you to use the material in this documentation, whole
14 | or in parts, in its present form or adapted, and for any purpose
15 | (including commercial use), as long as you
16 |
17 | - attribute the material to us giving the information provided below
18 | and
19 | - share the material under this same license
20 |
21 | For more details (and the legally binding conditions) see the `Creative
22 | Commons license
23 | page `__ for this
24 | license.
25 |
26 | Attribution details:
27 |
28 | (c) by Crossbar.io Technologies GmbH, material licensed under the
29 | CC-BY-SA 4.0, provided as-is without any warranties, `Crossbar.io
30 | documentation wiki `__
31 |
32 | Note to Contributors to this documentation
33 | ------------------------------------------
34 |
35 | By contributing, you accept that the above license applies to your
36 | contribution.
37 |
--------------------------------------------------------------------------------
/docs/Going-to-Production.rst:
--------------------------------------------------------------------------------
1 | :orphan:
2 |
3 | Going to Production
4 | ===================
5 |
6 | This section covers security issues and fine-tuning of advanced options.
7 | Tips for a performant and secure production configuration.
8 |
9 | - :doc:`Running on privileged ports `
10 | - :doc:`Secure WebSocket and HTTPS `
11 | - :doc:`TLS Certificates `
12 | - :doc:`Automatic startup and restart `
13 | - :doc:`Network Tuning `
14 | - :doc:`Reverse Proxies `
15 | - :doc:`SSL/TLS Interception Proxies `
16 |
17 | Testing your instance & browser support.
18 |
19 | - :doc:`Browser Support `
20 | - :doc:`WebSocket Compliance Testing `
21 | - :doc:`Stream Testee `
22 |
--------------------------------------------------------------------------------
/docs/Makefile:
--------------------------------------------------------------------------------
1 | # Minimal makefile for Sphinx documentation
2 | #
3 |
4 | # You can set these variables from the command line.
5 | SPHINXOPTS =
6 | SPHINXBUILD = sphinx-build
7 | SPHINXPROJ = Crossbario
8 | SOURCEDIR = .
9 | BUILDDIR = _build
10 |
11 | # Put it first so that "make" without argument is like "make help".
12 | help:
13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14 |
15 | .PHONY: help Makefile
16 |
17 | # Catch-all target: route all unknown targets to Sphinx using the new
18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19 | %: Makefile
20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
--------------------------------------------------------------------------------
/docs/Programming.rst:
--------------------------------------------------------------------------------
1 | :orphan:
2 |
3 | The following are language specific guides for application developers
4 | working with Crossbar.io.
5 |
6 | WAMP Programming
7 | ================
8 | - `WAMP Programming in Python `__
9 | - `WAMP Programming in JavaScript `__
10 |
11 | Writing Application Components
12 | ==============================
13 | - HTML5 Application Components
14 | - Node.js Application Components
15 | - Python Application Components
16 |
17 | Advanced Topics
18 | ===============
19 | - :doc:`Database Programming with PostgreSQL `
20 | - :doc:`AngularJS Application Component `
21 | - :doc:`Session Meta Events and Procedures `
22 | - :doc:`Session Statistics `
23 | - :doc:`Starting and Stopping Crossbar.io `
24 |
--------------------------------------------------------------------------------
/docs/PubSub.rst:
--------------------------------------------------------------------------------
1 | :orphan:
2 |
3 | Overview
4 | ========
5 |
6 | See the following pages
7 |
8 | - :doc:`How Subscriptions Work`
9 | - :doc:`Basic Subscriptions`
10 | - :doc:`Pattern Based Subscriptions`
11 | - :doc:`Publisher Identification`
12 | - :doc:`Publisher Exclusion`
13 | - :doc:`Subscriber Black and Whitelisting`
14 | - :doc:`Event History`
15 | - :doc:`Retained Events`
16 | - :doc:`Subscription Meta Events and Procedures`
17 |
--------------------------------------------------------------------------------
/docs/RPC.rst:
--------------------------------------------------------------------------------
1 | :orphan:
2 |
3 |
4 | Overview
5 | ========
6 |
7 | See the following pages
8 |
9 | - :doc:`How Registrations Work `
10 | - :doc:`Basic Registrations `
11 | - :doc:`Registration Options `
12 | - :doc:`Pattern Based Registrations `
13 | - :doc:`Caller Identification `
14 | - :doc:`Shared Registrations `
15 | - :doc:`Progressive Call Results `
16 | - :doc:`Registration Meta Events and Procedures `
17 |
--------------------------------------------------------------------------------
/docs/Resource-Service.rst:
--------------------------------------------------------------------------------
1 | :orphan:
2 |
3 | Resource Service
4 | ================
5 |
6 | Allows to hook any Twisted Web resource into the service tree.
7 |
8 | Configuration
9 | -------------
10 |
11 | To configure a Resource Service, attach a dictionary element to a path
12 | in your :doc:`Web transport `:
13 |
14 | +-----------+-------------------------------------------------------------------------------+
15 | | attribute | description |
16 | +===========+===============================================================================+
17 | | type | Must be "resource". |
18 | +-----------+-------------------------------------------------------------------------------+
19 | | classname | Fully qualified Python class of the Twisted Web resource to expose. |
20 | +-----------+-------------------------------------------------------------------------------+
21 | | extra | Arbitrary extra data provided to the constructor of the Twisted Web resource. |
22 | +-----------+-------------------------------------------------------------------------------+
23 |
24 | Example
25 | -------
26 |
27 | Write me.
28 |
--------------------------------------------------------------------------------
/docs/Retained-Events.rst:
--------------------------------------------------------------------------------
1 | :orphan:
2 |
3 | Retained Events
4 | ===============
5 |
6 | When publishing an event, the publisher can set an option
7 | (``retain=True``) in the ``PublishOptions`` which will cause the Broker
8 | to retain the event being published as the most-recent event on this
9 | topic.
10 |
11 | Note that :doc:`Event History` is similar to this feature, but not the
12 | same.
13 |
14 | No configuration is required in Crossbar in order to take advantage of
15 | this; it is up to the publisher.
16 |
17 | Retrieving an Event
18 | ===================
19 |
20 | Upon subscription, a client can pass ``get_retained=True`` in the
21 | ``SubscribeOptions``. If there is any retained event, it will be
22 | immediately sent to the subscriber.
23 |
24 | Example
25 | =======
26 |
27 | There is a completely-worked example `in the Autobahn-Python
28 | repository `__.
29 |
--------------------------------------------------------------------------------
/docs/Reverse-Proxies.rst:
--------------------------------------------------------------------------------
1 | :orphan:
2 |
3 |
4 | Reverse Proxies
5 | ===============
6 |
7 | Running Crossbar.io behind `reverse
8 | proxies `__.
9 |
10 | HAProxy
11 | -------
12 |
13 | Write me.
14 |
15 | Nginx
16 | -----
17 |
18 | Write me. You can find some Nginx examples and hints
19 | `here `__.
20 |
21 | Note also that nginx's default timeout is 60 seconds; use
22 | ``proxy_read_timeout`` option to increase this.
23 |
24 | Apache
25 | ------
26 |
27 | Apache supports proxying WebSocket connections using
28 | `mod\_proxy\_wstunnel `__.
29 |
--------------------------------------------------------------------------------
/docs/Security.rst:
--------------------------------------------------------------------------------
1 | :orphan:
2 |
3 |
4 | Security
5 | ========
6 |
7 | References
8 | ----------
9 |
10 | - `A New Approach to IoT
11 | Security `__
12 | - `Inside-Out Security for the
13 | IoT `__
14 | - `TUV SUD IoT Honeynet Project (in
15 | German) `__
16 |
--------------------------------------------------------------------------------
/docs/Starting-and-Stopping-Crossbar.rst:
--------------------------------------------------------------------------------
1 | :orphan:
2 |
3 | .. _Starting-and-Stopping-Crossbar:
4 |
5 | Starting and Stopping Crossbar.io
6 | ---------------------------------
7 |
--------------------------------------------------------------------------------
/docs/Table-of-Contents.rst:
--------------------------------------------------------------------------------
1 | :orphan:
2 |
3 | .. _site_contents:
4 |
5 | Table of Contents:
6 | ==================
7 |
8 | .. toctree::
9 | :maxdepth: 4
10 | :glob:
11 |
12 | *
13 |
--------------------------------------------------------------------------------
/docs/_static/.keep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs/_static/.keep
--------------------------------------------------------------------------------
/docs/_static/css/custom.css:
--------------------------------------------------------------------------------
1 | /* custom CSS to include in generated pages */
2 |
3 | .wy-nav-content {
4 | max-width: 1200px;
5 | }
6 |
7 | .wy-nav-side {
8 | position: fixed;
9 | }
10 |
11 | .wy-side-nav-search {
12 | background-color: #333333;
13 | }
14 |
15 | .wy-side-nav-search>a img.logo {
16 | width: 160px;
17 | }
18 |
19 | .rdftriple {
20 | width: 100%;
21 | max-width: 600px;
22 | }
23 |
24 | .rst-content .note .admonition-title {
25 | background-color: #333333;
26 | color: #FFF000;
27 | }
28 |
29 | .rst-content table.docutils thead {
30 | background-color: #333333;
31 | color: #FFF000;
32 | }
33 |
34 | .rst-content .note {
35 | background-color: #E3E3E3;
36 | }
37 |
38 | .rst-content div[class^='highlight'] {
39 |
40 | background-color: #E3E3E3;
41 | }
42 |
--------------------------------------------------------------------------------
/docs/_static/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs/_static/favicon.ico
--------------------------------------------------------------------------------
/docs/administration-guide.rst:
--------------------------------------------------------------------------------
1 | :orphan:
2 |
3 | .. _administration-guide:
4 |
5 | Administration Guide
6 | ====================
7 |
8 | Test
9 | ----
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/docs/assets/crossbar-works.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs/assets/crossbar-works.png
--------------------------------------------------------------------------------
/docs/assets/helloworldmix.svg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs/assets/helloworldmix.svg
--------------------------------------------------------------------------------
/docs/assets/pubsub-backend-browser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs/assets/pubsub-backend-browser.png
--------------------------------------------------------------------------------
/docs/assets/pubsub-frontend-browser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/docs/assets/pubsub-frontend-browser.png
--------------------------------------------------------------------------------
/docs/basic-concept.rst:
--------------------------------------------------------------------------------
1 | :orphan:
2 |
3 |
4 | .. _basic-concept:
5 |
6 | Basic Concept
7 | =============
8 |
9 | WAMP
10 | ----
11 |
12 |
13 | Publish & Subscribe
14 | -------------------
15 |
16 |
17 | Routed Remote Procedure Calls
18 | -----------------------------
19 |
20 |
21 | WAMP Roles
22 | ----------
23 |
24 |
25 | Crossbar.io Node
26 | ----------------
27 |
28 |
29 | Configuration
30 | -------------
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/docs/code/backend.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | PubSub Basic Backend
5 | Sending WAMP Events...
6 | You can also open JavaScript console to watch output.
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/docs/code/backend.js:
--------------------------------------------------------------------------------
1 | try {
2 | var autobahn = require('autobahn');
3 | } catch (e) {
4 | // when running in browser, AutobahnJS will
5 | // be included without a module system
6 | }
7 |
8 | var connection = new autobahn.Connection({
9 | url: 'ws://127.0.0.1:8080/ws',
10 | realm: 'realm1'}
11 | );
12 |
13 | connection.onopen = function (session) {
14 |
15 | var counter = 0;
16 |
17 | setInterval(function () {
18 | console.log("publishing to topic 'com.myapp.hello': " + "Hello World "+counter);
19 | session.publish('com.myapp.hello', ['Hello World ' + counter]);
20 | document.getElementById('WAMPEvent').innerHTML = "Event: Hello World "+counter;
21 | counter += 1;
22 | }, 1000);
23 | };
24 |
25 | connection.open();
26 |
--------------------------------------------------------------------------------
/docs/code/client_appsession_publish.py:
--------------------------------------------------------------------------------
1 |
2 | from __future__ import print_function
3 | from os import environ
4 | import os
5 | from twisted.internet.defer import inlineCallbacks
6 |
7 | from autobahn.twisted.util import sleep
8 | from autobahn.twisted.wamp import ApplicationSession, ApplicationRunner
9 |
10 |
11 | class ClientSession(ApplicationSession):
12 | """
13 | An application component that publishes an event every second.
14 | """
15 |
16 | @inlineCallbacks
17 | def onJoin(self, details):
18 | print("session attached")
19 | counter = 0
20 | while True:
21 | print('backend publishing com.myapp.topic1', counter)
22 | self.publish(u'com.myapp.topic1', "Hello World %d"%counter)
23 | counter += 1
24 | yield sleep(1)
25 |
26 |
27 | if __name__ == '__main__':
28 | import six
29 | url = os.environ.get('CBURL', u'ws://localhost:8080/ws')
30 | realm = os.environ.get('CBREALM', u'realm1')
31 |
32 | # any extra info we want to forward to our ClientSession (in self.config.extra)
33 | extra = {
34 | u'foobar': u'A custom value'
35 | }
36 |
37 | runner = ApplicationRunner(url=url, realm=realm, extra=extra)
38 | runner.run(ClientSession, auto_reconnect=True)
39 |
40 |
--------------------------------------------------------------------------------
/docs/code/client_appsession_rpc_callee.py:
--------------------------------------------------------------------------------
1 |
2 | from os import environ
3 | import datetime
4 | import os
5 | from twisted.internet.defer import inlineCallbacks
6 |
7 | from autobahn.twisted.wamp import ApplicationSession, ApplicationRunner
8 |
9 |
10 | class ClientSession(ApplicationSession):
11 | """
12 | A simple time service application component.
13 | """
14 |
15 | @inlineCallbacks
16 | def onJoin(self, details):
17 | print("session attached")
18 |
19 | def utcnow():
20 | now = datetime.datetime.utcnow()
21 | return now.strftime("%Y-%m-%dT%H:%M:%SZ")
22 |
23 | try:
24 | yield self.register(utcnow, u'com.timeservice.now')
25 | except Exception as e:
26 | print("failed to register procedure: {}".format(e))
27 | else:
28 | print("procedure registered")
29 |
30 |
31 | if __name__ == '__main__':
32 | import six
33 | url = os.environ.get('CBURL', u'ws://localhost:8080/ws')
34 | realm = os.environ.get('CBREALM', u'realm1')
35 |
36 | # any extra info we want to forward to our ClientSession (in self.config.extra)
37 | extra = {
38 | u'foobar': u'A custom value'
39 | }
40 |
41 | runner = ApplicationRunner(url=url, realm=realm, extra=extra)
42 | runner.run(ClientSession, auto_reconnect=True)
43 |
--------------------------------------------------------------------------------
/docs/code/client_appsession_rpc_caller.py:
--------------------------------------------------------------------------------
1 |
2 | from os import environ
3 | import os
4 | from twisted.internet import reactor
5 | from twisted.internet.defer import inlineCallbacks
6 |
7 | from autobahn.twisted.wamp import ApplicationSession, ApplicationRunner
8 |
9 |
10 | class ClientSession(ApplicationSession):
11 | """
12 | An application component using the time service.
13 | """
14 |
15 | @inlineCallbacks
16 | def onJoin(self, details):
17 | print("session attached")
18 | try:
19 | now = yield self.call(u'com.timeservice.now')
20 | except Exception as e:
21 | print("Error: {}".format(e))
22 | else:
23 | print("Current time from time service: {}".format(now))
24 |
25 | self.leave()
26 |
27 | def onDisconnect(self):
28 | print("disconnected")
29 | reactor.stop()
30 |
31 |
32 | if __name__ == '__main__':
33 | import six
34 | url = os.environ.get('CBURL', u'ws://localhost:8080/ws')
35 | realm = os.environ.get('CBREALM', u'realm1')
36 |
37 | # any extra info we want to forward to our ClientSession (in self.config.extra)
38 | extra = {
39 | u'foobar': u'A custom value'
40 | }
41 |
42 | runner = ApplicationRunner(url=url, realm=realm, extra=extra)
43 | runner.run(ClientSession, auto_reconnect=True)
44 |
45 |
--------------------------------------------------------------------------------
/docs/code/client_component_publish.py:
--------------------------------------------------------------------------------
1 | from autobahn.twisted.component import Component, run
2 | from autobahn.twisted.util import sleep
3 | from twisted.internet.defer import inlineCallbacks
4 | import os
5 | import argparse
6 | import six
7 |
8 | url = os.environ.get('CBURL', u'ws://localhost:8080/ws')
9 | realmv = os.environ.get('CBREALM', u'realm1')
10 | print(url, realmv)
11 | component = Component(transports=url, realm=realmv)
12 |
13 | @component.on_join
14 | @inlineCallbacks
15 | def joined(session, details):
16 | print("session ready")
17 | counter = 0
18 | while True:
19 | # publish() only returns a Deferred if we asked for an acknowledgement
20 | session.publish(u'com.myapp.hello', "Hello World {}".format(counter))
21 | counter += 1
22 | yield sleep(1)
23 |
24 | if __name__ == "__main__":
25 | run([component])
26 |
--------------------------------------------------------------------------------
/docs/code/client_component_rpc_callee.py:
--------------------------------------------------------------------------------
1 | from autobahn.twisted.component import Component, run
2 | from autobahn.twisted.util import sleep
3 | from twisted.internet.defer import inlineCallbacks
4 | import os
5 | import argparse
6 | import six
7 | import datetime
8 |
9 | url = os.environ.get('CBURL', u'ws://localhost:8080/ws')
10 | realmv = os.environ.get('CBREALM', u'realm1')
11 | print(url, realmv)
12 | component = Component(transports=url, realm=realmv)
13 |
14 | @component.on_join
15 | @inlineCallbacks
16 | def joined(session, details):
17 | print("session ready")
18 |
19 | def utcnow():
20 | now = datetime.datetime.utcnow()
21 | return now.strftime("%Y-%m-%dT%H:%M:%SZ")
22 |
23 | try:
24 | yield session.register(utcnow, u'com.myapp.date')
25 | print("procedure registered")
26 | except Exception as e:
27 | print("could not register procedure: {0}".format(e))
28 |
29 |
30 | if __name__ == "__main__":
31 | run([component])
32 |
--------------------------------------------------------------------------------
/docs/code/client_component_rpc_caller.py:
--------------------------------------------------------------------------------
1 | from autobahn.twisted.component import Component, run
2 | from autobahn.twisted.util import sleep
3 | from twisted.internet.defer import inlineCallbacks
4 | import os
5 | import argparse
6 | import six
7 | import datetime
8 |
9 | url = os.environ.get('CBURL', u'ws://localhost:8080/ws')
10 | realmv = os.environ.get('CBREALM', u'realm1')
11 | print(url, realmv)
12 | component = Component(transports=url, realm=realmv)
13 |
14 | @component.on_join
15 | @inlineCallbacks
16 | def joined(session, details):
17 | print("session ready")
18 | try:
19 | res = yield session.call(u'com.myapp.date')
20 | print("\ncall result: {}\n".format(res))
21 | except Exception as e:
22 | print("call error: {0}".format(e))
23 | yield session.leave()
24 |
25 |
26 | if __name__ == "__main__":
27 | run([component])
28 |
--------------------------------------------------------------------------------
/docs/code/client_component_subscribe.py:
--------------------------------------------------------------------------------
1 | from autobahn.twisted.component import Component, run
2 | from autobahn.twisted.util import sleep
3 | from twisted.internet.defer import inlineCallbacks
4 | import os
5 |
6 | url = os.environ.get('CBURL', u'ws://localhost:8080/ws')
7 | realmvalue = os.environ.get('CBREALM', u'realm1')
8 | component = Component(transports=url, realm=realmvalue)
9 |
10 | @component.on_join
11 | @inlineCallbacks
12 | def joined(session, details):
13 | print("session ready")
14 |
15 | def oncounter(count):
16 | print("event received: {0}", count)
17 |
18 | try:
19 | yield session.subscribe(oncounter, u'my.com.hello')
20 | print("subscribed to topic")
21 | except Exception as e:
22 | print("could not subscribe to topic: {0}".format(e))
23 |
24 | if __name__ == "__main__":
25 | run([component])
26 |
--------------------------------------------------------------------------------
/docs/code/frontend.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | PubSub Basic Frontend
5 | Waiting for Events
6 | You can also open JavaScript console to watch output.
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/docs/code/frontend.js:
--------------------------------------------------------------------------------
1 | try {
2 | var autobahn = require('autobahn');
3 | } catch (e) {
4 | // when running in browser, AutobahnJS will
5 | // be included without a module system
6 | }
7 |
8 | var connection = new autobahn.Connection({
9 | url: 'ws://127.0.0.1:8080/ws',
10 | realm: 'realm1'}
11 | );
12 |
13 | connection.onopen = function (session) {
14 |
15 | function onevent1(args) {
16 | console.log("Got event:", args[0]);
17 | document.getElementById('WAMPEvent').innerHTML = "Events:"+ args[0];
18 | }
19 |
20 | session.subscribe('com.myapp.hello', onevent1);
21 | };
22 |
23 | connection.open();
24 |
--------------------------------------------------------------------------------
/docs/code/rpc_callee.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | RPC Date Callee
5 | You should open JavaScript console to watch output.
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/docs/code/rpc_callee.js:
--------------------------------------------------------------------------------
1 | var isBrowser = false;
2 |
3 | try {
4 | var autobahn = require('autobahn');
5 | } catch (e) {
6 | isBrowser = true;
7 | }
8 | console.log("Running AutobahnJS " + autobahn.version);
9 |
10 | if (isBrowser) {
11 | url = 'ws://127.0.0.1:8080/ws';
12 | realm = 'realm1';
13 | }
14 | else {
15 | url = process.env.CBURL;
16 | realm = process.env.CBREALM;
17 | }
18 |
19 | var connection = new autobahn.Connection({ url: url, realm: realm });
20 |
21 | connection.onopen = function (session, details) {
22 | console.log("session open!", details);
23 |
24 | function utcnow() {
25 | console.log("Someone is calling com.myapp.date");
26 | now = new Date();
27 | return now.toISOString();
28 | }
29 |
30 | session.register('com.myapp.date', utcnow).then(
31 | function (registration) {
32 | console.log("Procedure registered:", registration.id);
33 | },
34 | function (error) {
35 | console.log("Registration failed:", error);
36 | }
37 | );
38 | };
39 |
40 | connection.onclose = function (reason, details) {
41 | console.log("session closed: " + reason, details);
42 | }
43 |
44 | connection.open();
45 |
--------------------------------------------------------------------------------
/docs/concept-features.rst:
--------------------------------------------------------------------------------
1 | :orphan:
2 |
3 | .. _concept-features:
4 |
5 | Concept and Features
6 | ====================
7 |
8 | basic-concept
9 |
10 | .. crossbar-features
11 |
12 | :doc:`Basic Concept `
13 | ------------------------------------
14 |
15 | Crossbar Features
16 | -----------------
17 |
18 |
--------------------------------------------------------------------------------
/docs/contents.rst.inc:
--------------------------------------------------------------------------------
1 | .. toctree::
2 | :caption: Table of Contents
3 | :maxdepth: 2
4 | :name: mastertoc
5 |
6 | .. If you are new to Crossbar.io development in general you should start here at :ref:`getting-started`
7 |
8 | Introduction
9 | -------------
10 | * :doc:`Getting Started `
11 |
12 | Administrators
13 | --------------
14 | * :doc:`Concept & Features `
15 | * :doc:`Installation Guide `
16 | * :doc:`Administration Guide `
17 |
18 | Programmers
19 | -----------
20 | * :doc:`Developer Guide `
21 | * :doc:`Integration Guide `
22 | * :doc:`Tutorials & Recipe `
23 |
24 | More
25 | ----
26 | * :doc:`Compatibility Policy `
27 | * :doc:`Crossbar Code License `
28 | * :doc:`Documentation License `
29 | * `Contributing to the Project** `__
30 | * :doc:`Contributing FAQ `
31 | * :doc:`FAQ `
32 |
33 |
--------------------------------------------------------------------------------
/docs/crossbar-features.rst:
--------------------------------------------------------------------------------
1 | :orphan:
2 |
3 |
4 | .. _crossbar-features:
5 |
6 | Crossbar Features
7 | =================
8 |
--------------------------------------------------------------------------------
/docs/developer-guide.rst:
--------------------------------------------------------------------------------
1 | :orphan:
2 |
3 | .. _developer-guide:
4 |
5 | Developer Guide
6 | ===============
7 |
8 | Usage
9 | -----
10 |
11 | :ref:`Starting-and-Stopping-Crossbar`
12 |
13 | General
14 | -------
15 |
16 |
17 | Publish and Subscribe
18 | ---------------------
19 |
20 |
21 | Remote Procedure Calls
22 | ----------------------
23 |
24 |
25 | Specific Usages
26 | ---------------
27 |
28 |
29 | Specific Languages
30 | ------------------
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/docs/integration-guide.rst:
--------------------------------------------------------------------------------
1 | :orphan:
2 |
3 | .. _integration-guide:
4 |
5 | Integration Guide
6 | =================
7 |
--------------------------------------------------------------------------------
/docs/policy-licence-faq.rst:
--------------------------------------------------------------------------------
1 | :orphan:
2 |
3 | .. _policy-license-faq:
4 |
5 | Policy, Licensing and FAQ
6 | =========================
7 |
8 |
9 |
--------------------------------------------------------------------------------
/docs/tutorials-recipe.rst:
--------------------------------------------------------------------------------
1 | :orphan:
2 |
3 | .. _tutorialandrecipe:
4 |
5 | Tutorials and Recipes
6 | =====================
7 |
8 |
9 |
--------------------------------------------------------------------------------
/legal/agplv3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/legal/agplv3.png
--------------------------------------------------------------------------------
/legal/contributors_cb_tech.md:
--------------------------------------------------------------------------------
1 | Contributors with signed CAAs
2 |
3 | * meejah
4 | * yamakaky
5 | * mbonneau
6 |
7 | Entity CAAs
8 |
9 | * voryx
10 |
--------------------------------------------------------------------------------
/legal/contributors_tavendo.md:
--------------------------------------------------------------------------------
1 | Contributors with signed CAAs
2 |
3 | * agronholm
4 | * bb4242
5 | * dimddev
6 | * eth3lbert
7 | * firefighterblu3
8 | * ftes
9 | * hawkowl
10 | * Kostronor
11 | * markope
12 | * meejah
13 | * paranaix
14 | * pataelmo
15 | * rlamy
16 | * schoonc
17 | * si618
18 | * SISCIA
19 | * slav0nic
20 | * svpcom
21 | * taion
22 | * touilleMan
23 | * voidfuture
24 | * w1z2g3
25 | * wilbertom
26 | * yoch
27 |
28 | Entity CAAs
29 |
30 | * Quantum SI Inc
31 | * Recode Systems
32 |
--------------------------------------------------------------------------------
/legal/crossbar_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/legal/crossbar_icon.png
--------------------------------------------------------------------------------
/legal/crossbar_icon_and_text_vectorized.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/legal/crossbar_icon_and_text_vectorized.png
--------------------------------------------------------------------------------
/legal/crossbar_text_vectorized.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/legal/crossbar_text_vectorized.png
--------------------------------------------------------------------------------
/legal/entity_caa.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/legal/entity_caa.pdf
--------------------------------------------------------------------------------
/legal/individual_caa.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/legal/individual_caa.pdf
--------------------------------------------------------------------------------
/legal/wamp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/legal/wamp.png
--------------------------------------------------------------------------------
/mypy.ini:
--------------------------------------------------------------------------------
1 | [mypy]
2 | python_version = 3.11
3 | disable_error_code = annotation-unchecked
4 |
5 | [mypy-crossbar.worker.test.examples.*]
6 | ignore_errors = True
7 |
8 | [mypy-crossbar.*]
9 | ignore_missing_imports = True
10 |
11 | [mypy-six.*]
12 | ignore_missing_imports = True
13 |
14 | [mypy-requests.*]
15 | ignore_missing_imports = True
16 |
17 | [mypy-pkg_resources.*]
18 | ignore_missing_imports = True
19 |
20 | [mypy-yaml.*]
21 | ignore_missing_imports = True
22 |
23 | [mypy-mock.*]
24 | ignore_missing_imports = True
25 |
26 | [mypy-attr.*]
27 | ignore_missing_imports = True
28 |
29 | [mypy-docutils.*]
30 | ignore_missing_imports = True
31 |
32 | [mypy-OpenSSL.*]
33 | ignore_missing_imports = True
34 |
--------------------------------------------------------------------------------
/pyproject.toml:
--------------------------------------------------------------------------------
1 | [tool.towncrier]
2 | package = "crossbar"
3 | package_dir = "."
4 | filename = "NEWS.rst"
5 |
--------------------------------------------------------------------------------
/pytest.ini:
--------------------------------------------------------------------------------
1 | [pytest]
2 | filterwarnings =
3 | ignore::DeprecationWarning
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | py-cid @ git+https://github.com/crossbario/py-cid.git@e1dc52a43ced53845679405f78d92fb18f093653
2 | py-multihash @ git+https://github.com/crossbario/py-multihash.git@86b54b8f9f0cf14c7370f38ae32f2b4b14f5b5e0
3 |
--------------------------------------------------------------------------------
/setup.cfg:
--------------------------------------------------------------------------------
1 | [bdist_wheel]
2 | universal=1
3 |
4 | # https://stackoverflow.com/a/49501010/884770
5 | [options]
6 | install_requires =
7 | wsaccel>=0.6.2; platform_python_implementation=='CPython'
8 |
9 | [pycodestyle]
10 | max-line-length = 110
11 | statistics = True
12 |
--------------------------------------------------------------------------------
/sitecustomize.py:
--------------------------------------------------------------------------------
1 | try:
2 | import coverage
3 | coverage.process_startup()
4 | except ImportError:
5 | pass
6 |
--------------------------------------------------------------------------------
/test/app1/README.md:
--------------------------------------------------------------------------------
1 | This app subscribes to the core set of WAMP meta events and logs events as received.
2 |
3 | To run:
4 |
5 | ```console
6 | python client.py --realm $CBREALM --url $CBURL --service app1a
7 | ```
8 |
--------------------------------------------------------------------------------
/test/app2/README.md:
--------------------------------------------------------------------------------
1 | This app subscribes to the core set of WAMP meta events and logs events as received.
2 |
3 | To run:
4 |
5 | ```console
6 | python client.py --realm $CBREALM --url $CBURL
7 | ```
8 |
--------------------------------------------------------------------------------
/test/cf1/.crossbar/key.priv:
--------------------------------------------------------------------------------
1 | Crossbar.io node private key - KEEP THIS SAFE!
2 |
3 | creator: oberstet@intel-nuci7
4 | created-at: 2022-07-03T01:18:46.061Z
5 | machine-id: 816b4b901e774fc1ad59cbf2719806b7
6 | node-authid: core1
7 | node-cluster-ip: core1
8 | public-key-ed25519: 7be45c5ea077aff51973b9af8cadea31955087f9cd483bd57b51c3b7da4bc623
9 | public-adr-eth: 0x119AE3287bc259a944119456B03D3eC4D31c1105
10 | private-key-ed25519: 4fc5bcba148be97d2b20cd9c2e30b7f80f6c10f23e60e01974be66ba8920c51a
11 | private-key-eth: 8aab8bfd448640c92a1a2ed32aa7b4b6d75eae842c0ab8c20216fe1b711697cc
12 |
--------------------------------------------------------------------------------
/test/cf1/.crossbar/key.pub:
--------------------------------------------------------------------------------
1 | Crossbar.io node public key
2 |
3 | creator: oberstet@intel-nuci7
4 | created-at: 2022-07-03T01:18:46.061Z
5 | machine-id: 816b4b901e774fc1ad59cbf2719806b7
6 | node-authid: core1
7 | node-cluster-ip: core1
8 | public-key-ed25519: 7be45c5ea077aff51973b9af8cadea31955087f9cd483bd57b51c3b7da4bc623
9 | public-adr-eth: 0x119AE3287bc259a944119456B03D3eC4D31c1105
10 |
--------------------------------------------------------------------------------
/test/cf2/.crossbar/key.priv:
--------------------------------------------------------------------------------
1 | Crossbar.io node private key - KEEP THIS SAFE!
2 |
3 | creator: oberstet@intel-nuci7
4 | created-at: 2022-07-03T01:18:48.574Z
5 | machine-id: 816b4b901e774fc1ad59cbf2719806b7
6 | node-authid: core2
7 | node-cluster-ip: core2
8 | public-key-ed25519: 72ada0f4af4dde782a68ca2f4604b53babc79506d2e66474858771411670ccaf
9 | public-adr-eth: 0x602B3396F4C09bc1735033074a6Df2f27aE72595
10 | private-key-ed25519: 49d13be7a161b8568dfeac61aa291b9134f8ebca8a9a48249819e37b855914db
11 | private-key-eth: ef130ed4050a818f99e4ec021420c60e16decd4a55f093936446a5d161d71571
12 |
--------------------------------------------------------------------------------
/test/cf2/.crossbar/key.pub:
--------------------------------------------------------------------------------
1 | Crossbar.io node public key
2 |
3 | creator: oberstet@intel-nuci7
4 | created-at: 2022-07-03T01:18:48.574Z
5 | machine-id: 816b4b901e774fc1ad59cbf2719806b7
6 | node-authid: core2
7 | node-cluster-ip: core2
8 | public-key-ed25519: 72ada0f4af4dde782a68ca2f4604b53babc79506d2e66474858771411670ccaf
9 | public-adr-eth: 0x602B3396F4C09bc1735033074a6Df2f27aE72595
10 |
--------------------------------------------------------------------------------
/test/cf3/.crossbar/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": 2,
3 | "controller": {
4 | "fabric": {
5 | "transport": {
6 | "type": "websocket",
7 | "endpoint": {
8 | "type": "tcp",
9 | "host": "localhost",
10 | "port": 9000
11 | },
12 | "url": "ws://localhost:9000/ws"
13 | }
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/test/cf3/.crossbar/key.priv:
--------------------------------------------------------------------------------
1 | Crossbar.io node private key - KEEP THIS SAFE!
2 |
3 | creator: oberstet@intel-nuci7
4 | created-at: 2022-07-03T01:18:51.053Z
5 | machine-id: 816b4b901e774fc1ad59cbf2719806b7
6 | node-authid: core3
7 | node-cluster-ip: core3
8 | public-key-ed25519: 539c9c30f65531751261101898ca38b2441b3b4e5121513c5c4ee36599d4726f
9 | public-adr-eth: 0xC953dfb9Ecf880c337584AF29b152c40eAA41103
10 | private-key-ed25519: f676ffaae131fc5764f88811c9a975a5817ec499d1c32abce3e5665cebc2c5d2
11 | private-key-eth: c9ff74a6b510342f0f81c60564304b725983c71244f7fe825713988f4e53a567
12 |
--------------------------------------------------------------------------------
/test/cf3/.crossbar/key.pub:
--------------------------------------------------------------------------------
1 | Crossbar.io node public key
2 |
3 | creator: oberstet@intel-nuci7
4 | created-at: 2022-07-03T01:18:51.053Z
5 | machine-id: 816b4b901e774fc1ad59cbf2719806b7
6 | node-authid: core3
7 | node-cluster-ip: core3
8 | public-key-ed25519: 539c9c30f65531751261101898ca38b2441b3b4e5121513c5c4ee36599d4726f
9 | public-adr-eth: 0xC953dfb9Ecf880c337584AF29b152c40eAA41103
10 |
--------------------------------------------------------------------------------
/test/cfc/.crossbar/README.md:
--------------------------------------------------------------------------------
1 | CFC has a built-in config
2 |
--------------------------------------------------------------------------------
/test/cfc/.crossbar/config.ini:
--------------------------------------------------------------------------------
1 | [default]
2 |
3 | url=
4 | privkey=default.priv
5 | pubkey=default.pub
6 |
--------------------------------------------------------------------------------
/test/cfc/.crossbar/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": 2,
3 | "controller": {
4 | "id": "cfc666",
5 | "fabric-center": {
6 | }
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/test/cfc/.crossbar/default.priv:
--------------------------------------------------------------------------------
1 | Crossbar.io user private key - KEEP THIS SAFE!
2 |
3 | creator: unknown
4 | created-at: 2023-01-20T18:15:14.693Z
5 | user-id: unknown
6 | public-key-ed25519: badf9df012e95a72e73b7edba8739199557289db1e6ec498133c3c6b5f7bb545
7 | public-adr-eth: 0x87419274BBb815cd8646154D4f8B7e83d022C046
8 | private-key-ed25519: 04e515dca26595af4fc3e65a75966ce71689d225ac83874cec38e27150be980b
9 | private-key-eth: 842f83e4c73b403fb0fe3232d9558b5d6feb83d9292d82302833cb917f6ff8fa
10 |
--------------------------------------------------------------------------------
/test/cfc/.crossbar/default.pub:
--------------------------------------------------------------------------------
1 | Crossbar.io user public key
2 |
3 | creator: unknown
4 | created-at: 2023-01-20T18:15:14.693Z
5 | user-id: unknown
6 | public-key-ed25519: badf9df012e95a72e73b7edba8739199557289db1e6ec498133c3c6b5f7bb545
7 | public-adr-eth: 0x87419274BBb815cd8646154D4f8B7e83d022C046
8 |
--------------------------------------------------------------------------------
/test/cfc/.crossbar/dhparam.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN DH PARAMETERS-----
2 | MIIBCAKCAQEA2P5MLkaWXhFz29y2dOCFrf04GR+JY7vMvkXdNy6ub8toJIY3gc5M
3 | DBVVLDvK8GGycYHpLNWTJxVSQFemCVOtPIP2Hx1utw8llcAHD2tCnGSjfBvjBux8
4 | DzlIblr5y+aYtljjb5zNnR+mOfZ25MSvwyccficvxKQ8TXZQXcTxSOJ4AZjfeDZw
5 | SgZbBK6DLy9r5pVMEdM7hkUpV8oRkUg4A2DfiLm7hWqM5kidDVCxbP9eGAcT8yI/
6 | wl4yRMzTPk2gCRGpZ50dt+KRXTyrTptDCzSi7SFpG68WwHFWy4IRS8HZ49vA15Ak
7 | Fg0zELKpDC58/Nk8nPxGuOWfmS7vbodyowIBAg==
8 | -----END DH PARAMETERS-----
9 |
--------------------------------------------------------------------------------
/test/cfc/.crossbar/key.priv:
--------------------------------------------------------------------------------
1 | Crossbar.io node private key - KEEP THIS SAFE!
2 |
3 | creator: oberstet@intel-nuci7
4 | created-at: 2022-07-03T01:18:54.228Z
5 | machine-id: 816b4b901e774fc1ad59cbf2719806b7
6 | node-authid: intel-nuci7
7 | node-cluster-ip: 127.0.0.1
8 | public-key-ed25519: ad83955cba41db6ae16261fe5a9f3649c6ee6beb7b4f3d74ffd3b65cdb572f03
9 | public-adr-eth: 0x8F852F2310BE66E06cbA20d9EFF459f60689c7eC
10 | private-key-ed25519: 44c594cf959af40c20fa965d8a4110f1b104ed2634bfe4db7ddf1252d2761f17
11 | private-key-eth: 8935edd906f3c5a00f791d13dbf6c3ce5be256e86a19e3ced581f69903e2f21d
12 |
--------------------------------------------------------------------------------
/test/cfc/.crossbar/key.pub:
--------------------------------------------------------------------------------
1 | Crossbar.io node public key
2 |
3 | creator: oberstet@intel-nuci7
4 | created-at: 2022-07-03T01:18:54.228Z
5 | machine-id: 816b4b901e774fc1ad59cbf2719806b7
6 | node-authid: intel-nuci7
7 | node-cluster-ip: 127.0.0.1
8 | public-key-ed25519: ad83955cba41db6ae16261fe5a9f3649c6ee6beb7b4f3d74ffd3b65cdb572f03
9 | public-adr-eth: 0x8F852F2310BE66E06cbA20d9EFF459f60689c7eC
10 |
--------------------------------------------------------------------------------
/test/cfc/README.md:
--------------------------------------------------------------------------------
1 | CFC node directory (empty,as everything is stored in etcd)
2 |
--------------------------------------------------------------------------------
/test/cfc/web/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Open JavaScript console to watch log output (hit F12)
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/test/full/.crossbar/dhparam.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN DH PARAMETERS-----
2 | MIIBCAKCAQEAnh9gVzS6KoxxA4gCFBHaxN15HQcDCO/eoBga0/9RNqNZIKTG5s7R
3 | b2bft0/GNqF1qlC5AeFp1aUG7u/3yclpTLjbkjlyF7UHbdfKBsudPBGYdDVeozVK
4 | gbu8MrHOnmplvT56iKrIaoQVQH+Ub2qmjIVkRTnQPR/xbbCqiF2WJKFkNbP33HVw
5 | c+Mmsd8NhDjPDlh9XnB8rP6JyG1baI4bS8VnoBrvc0rbVI0AnTJSW+tTfNViVCaY
6 | O/eKXhsf+hNxEMwnWrKJc83D4MDt64hCPml55Sv8+UH/znJqupU5XJy2brsE0f2g
7 | iVVivxKeMcC9FUbCRDerzVSrsSclvHvl6wIBAg==
8 | -----END DH PARAMETERS-----
9 |
--------------------------------------------------------------------------------
/test/full/.crossbar/key.priv:
--------------------------------------------------------------------------------
1 | Crossbar.io node private key - KEEP THIS SAFE!
2 |
3 | creator: oberstet@intel-nuci7
4 | created-at: 2022-07-03T06:51:14.000Z
5 | machine-id: 816b4b901e774fc1ad59cbf2719806b7
6 | node-authid: intel-nuci7
7 | node-cluster-ip: 127.0.0.1
8 | public-key-ed25519: 477c171c3d0d4edf493d7dab46b062395dca1c9263965389c48212fd3f9394da
9 | public-adr-eth: 0x23Dc30967eD07A742A1562C9363691cFd332cF3c
10 | private-key-ed25519: f66cd0d9f4711051f01a10eda14eb3f9b0a279b240bc0ba8b1698413c5a0c844
11 | private-key-eth: 8dd00c81351147674964c156d261f74f8a8adf723b88857be4208d67321a352a
12 |
--------------------------------------------------------------------------------
/test/full/.crossbar/key.pub:
--------------------------------------------------------------------------------
1 | Crossbar.io node public key
2 |
3 | creator: oberstet@intel-nuci7
4 | created-at: 2022-07-03T06:51:14.000Z
5 | machine-id: 816b4b901e774fc1ad59cbf2719806b7
6 | node-authid: intel-nuci7
7 | node-cluster-ip: 127.0.0.1
8 | public-key-ed25519: 477c171c3d0d4edf493d7dab46b062395dca1c9263965389c48212fd3f9394da
9 | public-adr-eth: 0x23Dc30967eD07A742A1562C9363691cFd332cF3c
10 |
--------------------------------------------------------------------------------
/test/full/.crossbar/ssh_host_rsa_key.pub:
--------------------------------------------------------------------------------
1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDnCmHM386aGNC/BXgRtsDnJWbA2FPQw2wl0hDN81Auy2pKvhbKzZwy9vcBEYYam8oxcOgMYdN4EH4B98tms3qgZt20XpPuxtRAKm56iC1+lS9iAE3u7uCT2EfT4eV4Ww8zMBZV/SwkM4GndFtJdfpkMLmVNTMH7s4LEXO5mfP2dJuBJ91tKyuUcWzwS4gH4Vt8bYV7sG4HU1YsnDu6JKIwy/uVwnYciKUY1LVit2RyLA8PA6+prOB4u1FHTEiEZ9aOKyJi1U191eO1KOmTvdZ4M3Mp0HJp/ExsgJAqguP3xGkHa8EhpqsfjCUagiCVswd8SfbQLVU7kJ9Oe/iODdTvy+T98QvQ6gp5fv9SysXi35shQ/JptDhZXBDYqBlpwQ5APQ2hr9mBfpSKy7PQYpK5bmVqh07XdcSG9Zzg4c0oOyJq0X5K+O/WCfr4ZcvStmIO0vTotB7gIyTxUesiR2NXKxpFgykd3kIiiAf0CVAiWmjVhyk//IGFHqmzG1U2YqXPe6Oy1SJCmyrKmPXI7PhLDYTj3mFg1/NcMTRk85HQkhNxq6MJSzpSLyI0OhgyzTG2N+89XoUn4Jp6qdY34RBzuni7qw9ITacEsQK7vt11fP5y4rWF607hkZ9gm0tvAKuhG9WtkjGPsq0UmdYWd/xhvUSP9M1lBjJqPu2PgE6f/Q== oberstet@thinkpad-t430s
2 |
--------------------------------------------------------------------------------
/test/full/README.md:
--------------------------------------------------------------------------------
1 | Generated from Crossbar.io default node template.
2 |
--------------------------------------------------------------------------------
/test/full/myapp.py:
--------------------------------------------------------------------------------
1 | from twisted.logger import Logger
2 | from autobahn.twisted.wamp import ApplicationSession
3 |
4 | class MySession(ApplicationSession):
5 |
6 | log = Logger()
7 |
8 | def __init__(self, config):
9 | self.log.info("MySession.__init__()")
10 | ApplicationSession.__init__(self, config)
11 |
12 | def onJoin(self, details):
13 | self.log.info("MySession.onJoin()")
14 | #self.leave()
15 |
--------------------------------------------------------------------------------
/test/full/tick.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | while :
4 | do
5 | date
6 | sleep 1
7 | done
8 |
--------------------------------------------------------------------------------
/test/full/web/README.md:
--------------------------------------------------------------------------------
1 | Put your Web files here.
--------------------------------------------------------------------------------
/test/functests/__init__.py:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | #
3 | # Copyright (c) typedef int GmbH. Licensed under EUPLv1.2.
4 | #
5 | ###############################################################################
6 |
--------------------------------------------------------------------------------
/test/functests/cbtests/__init__.py:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | #
3 | # Copyright (c) typedef int GmbH. Licensed under EUPLv1.2.
4 | #
5 | ###############################################################################
6 |
--------------------------------------------------------------------------------
/test/functests/cfctests/__init__.py:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | #
3 | # Copyright (c) typedef int GmbH. Licensed under EUPLv1.2.
4 | #
5 | ###############################################################################
6 |
--------------------------------------------------------------------------------
/test/functests/components.py:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | #
3 | # Copyright (c) typedef int GmbH. Licensed under EUPLv1.2.
4 | #
5 | ###############################################################################
6 |
7 | from __future__ import print_function
8 |
9 | from autobahn.twisted.wamp import ApplicationSession
10 |
11 | # these are helper-components for various tests.
12 |
13 | # they are *not* in the test_*.py files because those don't import in
14 | # the test-system unless we install py.test, pytest-cov,
15 | # pytest-twitsed and enable at least the Twisted plugin so that
16 | # "pytest.inlineCallbacks" is available (for import)
17 |
18 |
19 | class EmptyComponent(ApplicationSession):
20 | """
21 | A component that does nothing.
22 | """
23 |
24 |
25 | class ErrorComponent(ApplicationSession):
26 | """
27 | A component that throws on construction.
28 | """
29 | def __init__(self, *args, **kw):
30 | raise RuntimeError("ErrorComponent always fails")
31 |
--------------------------------------------------------------------------------
/test/jupyter/.jupyter/migrated:
--------------------------------------------------------------------------------
1 | 2018-10-31T15:27:18.630403
--------------------------------------------------------------------------------
/test/management/ex_global_status.py:
--------------------------------------------------------------------------------
1 | # Copyright (c) typedef int GmbH, licensed under The MIT License (MIT)
2 |
3 | from pprint import pformat
4 |
5 | from crossbar.shell import client
6 |
7 |
8 | async def main(session):
9 | """
10 | Connect to CFC, get system status and exit.
11 | """
12 | status = await session.call(u'crossbarfabriccenter.domain.get_status')
13 | session.log.info('CFC domain status:\n{status}', status=pformat(status))
14 |
15 |
16 | if __name__ == '__main__':
17 | client.run(main)
18 |
--------------------------------------------------------------------------------
/test/management/ex_list_workers.py:
--------------------------------------------------------------------------------
1 | # Copyright (c) typedef int GmbH, licensed under The MIT License (MIT)
2 |
3 | from pprint import pformat
4 |
5 | from crossbar.shell import client
6 |
7 |
8 | async def main(session):
9 | """
10 | Iterate over all nodes, and all workers on each nodes to retrieve and
11 | print worker information.
12 | """
13 | nodes = await session.call(
14 | u'crossbarfabriccenter.mrealm.get_nodes', status=u'online')
15 | for node_id in nodes:
16 |
17 | workers = await session.call(
18 | u'crossbarfabriccenter.remote.node.get_workers', node_id)
19 | for worker_id in workers:
20 | worker = await session.call(
21 | u'crossbarfabriccenter.remote.node.get_worker',
22 | node_id,
23 | worker_id,
24 | include_stats=True)
25 | session.log.info(
26 | 'Node "{node_id}" / Worker "{worker_id}":\n{worker}',
27 | node_id=node_id,
28 | worker_id=worker_id,
29 | worker=pformat(worker))
30 |
31 |
32 | if __name__ == '__main__':
33 | client.run(main)
34 |
--------------------------------------------------------------------------------
/test/management/ex_status.py:
--------------------------------------------------------------------------------
1 | # Copyright (c) typedef int GmbH, licensed under The MIT License (MIT)
2 |
3 | from pprint import pformat
4 |
5 | from crossbar.shell import client
6 |
7 |
8 | async def main(session):
9 | """
10 | Connect to (a user management realm on) CFC, get status and exit.
11 |
12 | This is about the most basic example possible. You can copy this
13 | example and add your CFC calls, reuse the example driver (client.py)
14 | and get started super quickly.
15 | """
16 | status = await session.call(u'crossbarfabriccenter.mrealm.get_status')
17 | session.log.info('CFC status:\n{status}', status=pformat(status))
18 |
19 |
20 | if __name__ == '__main__':
21 | client.run(main)
22 |
--------------------------------------------------------------------------------
/test/management/ex_worker_log.py:
--------------------------------------------------------------------------------
1 | # Copyright (c) typedef int GmbH, licensed under The MIT License (MIT)
2 |
3 | from crossbar.shell import client
4 |
5 |
6 | async def main(session):
7 | """
8 | Iterate over all nodes, and all workers on each nodes to retrieve and
9 | print worker information. then exit.
10 | """
11 | nodes = await session.call(
12 | u'crossbarfabriccenter.mrealm.get_nodes', status=u'online')
13 | for node_id in nodes:
14 | workers = await session.call(
15 | u'crossbarfabriccenter.remote.node.get_workers', node_id)
16 | for worker_id in workers:
17 |
18 | session.log.info(
19 | 'Node "{node_id}" / Worker "{worker_id} log":',
20 | node_id=node_id,
21 | worker_id=worker_id)
22 |
23 | # retrieve log history of worker (last 100 lines)
24 | log = await session.call(
25 | u'crossbarfabriccenter.remote.node.get_worker_log', node_id,
26 | worker_id, 100)
27 |
28 | for log_rec in log:
29 | print(log_rec)
30 |
31 |
32 | if __name__ == '__main__':
33 | client.run(main)
34 |
--------------------------------------------------------------------------------
/test/run_crossbar.py:
--------------------------------------------------------------------------------
1 | if __name__ == '__main__':
2 | from crossbar import run
3 | run()
4 |
--------------------------------------------------------------------------------
/test/test_ab_examples.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | cd /tmp
4 | rm -f master.zip
5 | curl -o master.zip https://codeload.github.com/crossbario/autobahn-python/zip/master
6 | rm -rf autobahn-python-master
7 | unzip -q master.zip
8 | cd autobahn-python-master/examples
9 |
10 | # run RawSocket tests using Twisted and asyncio Autobahn client
11 | AUTOBAHN_DEMO_ROUTER=rs://127.0.0.1:8080 python run-all-examples.py
12 |
13 | # run WebSocket tests using Twisted and asyncio Autobahn client
14 | AUTOBAHN_DEMO_ROUTER=ws://127.0.0.1:8080/ws python run-all-examples.py
15 |
--------------------------------------------------------------------------------
/test/test_automated/.crossbar/config.ini:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/test/test_automated/.crossbar/config.ini
--------------------------------------------------------------------------------
/test/test_automated/.gitignore:
--------------------------------------------------------------------------------
1 | wamp_log.json
2 |
--------------------------------------------------------------------------------
/test/test_automated/.test/master/key.priv:
--------------------------------------------------------------------------------
1 | Crossbar.io node private key - KEEP THIS SAFE!
2 |
3 | creator: oberstet@intel-nuci7
4 | created-at: 2023-01-22T10:30:04.687Z
5 | machine-id: 816b4b901e774fc1ad59cbf2719806b7
6 | node-authid: intel-nuci7
7 | node-cluster-ip: 127.0.0.1
8 | public-key-ed25519: ea48f5cdd9ce41fc00d8a1fe2dcf6c43dddcd93689419fd6b956952c8a04cad8
9 | public-adr-eth: 0xefdfe8239688F47BBa1Ce7CDbe6293bb2Cea3E74
10 | private-key-ed25519: 458bd65f624d94e23d7985b707ac7f61f0f50aac7b9c5483271b1762a94697de
11 | private-key-eth: db7fa9dba33a767c1cefd4718411949767dde5fb8a63aeb22b20f2dce6d799ca
12 |
--------------------------------------------------------------------------------
/test/test_automated/.test/master/key.pub:
--------------------------------------------------------------------------------
1 | Crossbar.io node public key
2 |
3 | creator: oberstet@intel-nuci7
4 | created-at: 2023-01-22T10:30:04.687Z
5 | machine-id: 816b4b901e774fc1ad59cbf2719806b7
6 | node-authid: intel-nuci7
7 | node-cluster-ip: 127.0.0.1
8 | public-key-ed25519: ea48f5cdd9ce41fc00d8a1fe2dcf6c43dddcd93689419fd6b956952c8a04cad8
9 | public-adr-eth: 0xefdfe8239688F47BBa1Ce7CDbe6293bb2Cea3E74
10 |
--------------------------------------------------------------------------------
/test/test_automated/.test/nodes/node1/key.priv:
--------------------------------------------------------------------------------
1 | Crossbar.io node private key - KEEP THIS SAFE!
2 |
3 | creator: oberstet@intel-nuci7
4 | created-at: 2023-01-22T10:29:55.201Z
5 | machine-id: 816b4b901e774fc1ad59cbf2719806b7
6 | node-authid: node1
7 | node-cluster-ip: 127.0.0.1
8 | public-key-ed25519: be7671649265b3b8303980d5c39fffdfd3ec0fceccfad48d5b9e45b2129ce51c
9 | public-adr-eth: 0x25d469b38be2FB34B1985061e003BBC3D8f579ad
10 | private-key-ed25519: 597775f244e89d1787effedb6942641f15b3362e14515732024169c2588206a6
11 | private-key-eth: 5fd3e0212f6ea71bfd68960dcd3f29ce3768f6ae3d6c3f4c21bd71dde0c07c2a
12 |
--------------------------------------------------------------------------------
/test/test_automated/.test/nodes/node1/key.pub:
--------------------------------------------------------------------------------
1 | Crossbar.io node public key
2 |
3 | creator: oberstet@intel-nuci7
4 | created-at: 2023-01-22T10:29:55.201Z
5 | machine-id: 816b4b901e774fc1ad59cbf2719806b7
6 | node-authid: node1
7 | node-cluster-ip: 127.0.0.1
8 | public-key-ed25519: be7671649265b3b8303980d5c39fffdfd3ec0fceccfad48d5b9e45b2129ce51c
9 | public-adr-eth: 0x25d469b38be2FB34B1985061e003BBC3D8f579ad
10 |
--------------------------------------------------------------------------------
/test/test_automated/.test/nodes/node2/key.priv:
--------------------------------------------------------------------------------
1 | Crossbar.io node private key - KEEP THIS SAFE!
2 |
3 | creator: oberstet@intel-nuci7
4 | created-at: 2023-01-22T10:29:57.378Z
5 | machine-id: 816b4b901e774fc1ad59cbf2719806b7
6 | node-authid: node2
7 | node-cluster-ip: 127.0.0.1
8 | public-key-ed25519: a66fbff7d8f3521c1d69fc27f9c9d9e89ed543ea52ebdd82a86de02bcc8babf8
9 | public-adr-eth: 0x51194B30b6CBe63d86C3B610A7B613Fd86dbd342
10 | private-key-ed25519: 6bda135b317d19f9e2932e8bc840bcea4f4794bfa60c3a09c9b432297a13a2d6
11 | private-key-eth: ac4e14b65b28f3124db5302756df1211938e4ec3857d553b776e0d500ceef033
12 |
--------------------------------------------------------------------------------
/test/test_automated/.test/nodes/node2/key.pub:
--------------------------------------------------------------------------------
1 | Crossbar.io node public key
2 |
3 | creator: oberstet@intel-nuci7
4 | created-at: 2023-01-22T10:29:57.378Z
5 | machine-id: 816b4b901e774fc1ad59cbf2719806b7
6 | node-authid: node2
7 | node-cluster-ip: 127.0.0.1
8 | public-key-ed25519: a66fbff7d8f3521c1d69fc27f9c9d9e89ed543ea52ebdd82a86de02bcc8babf8
9 | public-adr-eth: 0x51194B30b6CBe63d86C3B610A7B613Fd86dbd342
10 |
--------------------------------------------------------------------------------
/test/test_automated/.test/nodes/node3/key.priv:
--------------------------------------------------------------------------------
1 | Crossbar.io node private key - KEEP THIS SAFE!
2 |
3 | creator: oberstet@intel-nuci7
4 | created-at: 2023-01-22T10:29:59.575Z
5 | machine-id: 816b4b901e774fc1ad59cbf2719806b7
6 | node-authid: node3
7 | node-cluster-ip: 127.0.0.1
8 | public-key-ed25519: a0897dc2c31b48c4e4d0855e76710733f181f41883d0b47c403f6465d78411ed
9 | public-adr-eth: 0xdB1fECDb369a55815c90B3787583c15D7754C1C4
10 | private-key-ed25519: db3550ddfa2e37d0b7a051779aae875ce8bcdfd0c762d8b41229ddd3ca0cd3b6
11 | private-key-eth: b2d6a77378638ea3b9b98409dfd9e901d6fa736ab0b8e0842e76ba2ce1503768
12 |
--------------------------------------------------------------------------------
/test/test_automated/.test/nodes/node3/key.pub:
--------------------------------------------------------------------------------
1 | Crossbar.io node public key
2 |
3 | creator: oberstet@intel-nuci7
4 | created-at: 2023-01-22T10:29:59.575Z
5 | machine-id: 816b4b901e774fc1ad59cbf2719806b7
6 | node-authid: node3
7 | node-cluster-ip: 127.0.0.1
8 | public-key-ed25519: a0897dc2c31b48c4e4d0855e76710733f181f41883d0b47c403f6465d78411ed
9 | public-adr-eth: 0xdB1fECDb369a55815c90B3787583c15D7754C1C4
10 |
--------------------------------------------------------------------------------
/test/test_automated/.test/nodes/node4/key.priv:
--------------------------------------------------------------------------------
1 | Crossbar.io node private key - KEEP THIS SAFE!
2 |
3 | creator: oberstet@intel-nuci7
4 | created-at: 2023-01-22T10:30:01.743Z
5 | machine-id: 816b4b901e774fc1ad59cbf2719806b7
6 | node-authid: node4
7 | node-cluster-ip: 127.0.0.1
8 | public-key-ed25519: 45a67448e3ab9c806a4681135b17fa44aee965d909ecd9b7e1af28b9b81a2f6d
9 | public-adr-eth: 0xDbE041D854158fa2993ddbc8b5499E7CDB8cbAD9
10 | private-key-ed25519: eecf0483fd3b87b50883dcabe93cfcd1d31cb4b33bfadd0dd6ab78ce604bf5c0
11 | private-key-eth: e5935c6c70f3a545460b22c3bec9ffdff76861f2d0705f75fe492352cef7bbde
12 |
--------------------------------------------------------------------------------
/test/test_automated/.test/nodes/node4/key.pub:
--------------------------------------------------------------------------------
1 | Crossbar.io node public key
2 |
3 | creator: oberstet@intel-nuci7
4 | created-at: 2023-01-22T10:30:01.743Z
5 | machine-id: 816b4b901e774fc1ad59cbf2719806b7
6 | node-authid: node4
7 | node-cluster-ip: 127.0.0.1
8 | public-key-ed25519: 45a67448e3ab9c806a4681135b17fa44aee965d909ecd9b7e1af28b9b81a2f6d
9 | public-adr-eth: 0xDbE041D854158fa2993ddbc8b5499E7CDB8cbAD9
10 |
--------------------------------------------------------------------------------
/test/test_automated/haproxy.cfg:
--------------------------------------------------------------------------------
1 | global
2 | log 127.0.0.1 local2
3 | maxconn 200000
4 |
5 | # https://www.freecodecamp.org/news/how-we-fine-tuned-haproxy-to-achieve-2-000-000-concurrent-ssl-connections-d017e61a4d27/
6 | # https://blog.onefellow.com/post/82478335338/haproxy-mapping-process-to-cpu-core-for-maximum
7 | nbthread 8
8 |
9 | defaults
10 | log global
11 | timeout connect 2000
12 | timeout client 2000
13 | timeout server 2000
14 |
15 | listen stats
16 | bind *:1936
17 | mode http
18 | stats enable
19 | stats hide-version
20 | stats realm Haproxy\ Statistics
21 | stats uri /
22 |
23 | frontend crossbar
24 | bind *:8080
25 | mode tcp
26 | option tcplog
27 | default_backend crossbar_nodes
28 | timeout client 1m
29 |
30 | backend crossbar_nodes
31 | mode tcp
32 | option log-health-checks
33 | log global
34 | # balance roundrobin
35 | balance leastconn
36 | server node1 node1:8080 check fall 3 rise 2
37 | server node2 node2:8080 check fall 3 rise 2
38 | server node3 node3:8080 check fall 3 rise 2
39 | server node4 node4:8080 check fall 3 rise 2
40 | timeout connect 10s
41 | timeout server 1m
42 |
--------------------------------------------------------------------------------
/test/test_automated/test_stop_host.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | CROSSBAR=crossbar
4 | CROSSBAR_FABRIC_SUPERUSER=${HOME}/.crossbar/default.pub
5 | CROSSBAR_FABRIC_URL=ws://localhost:9000/ws
6 | CROSSBAR_WATCH_TO_PAIR=../nodes
7 |
8 | pkill python
9 |
10 | ${CROSSBAR} edge stop --cbdir=./.test/nodes/node4
11 | ${CROSSBAR} edge stop --cbdir=./.test/nodes/node3
12 | ${CROSSBAR} edge stop --cbdir=./.test/nodes/node2
13 | ${CROSSBAR} edge stop --cbdir=./.test/nodes/node1
14 | ${CROSSBAR} master stop --cbdir=./.test/master
15 |
16 | rm -rf ./.test
17 |
--------------------------------------------------------------------------------
/test/test_backend/cf1/backend.py:
--------------------------------------------------------------------------------
1 | # Copyright (c) typedef int GmbH, licensed under The MIT License (MIT)
2 |
3 | import os
4 |
5 | from twisted.internet.defer import inlineCallbacks
6 |
7 | from autobahn.wamp.types import RegisterOptions
8 | from autobahn.twisted.wamp import ApplicationSession, ApplicationRunner
9 |
10 |
11 | class MyComponent(ApplicationSession):
12 |
13 | @inlineCallbacks
14 | def onJoin(self, details):
15 | self._ident = 'MyComponent[pid={}, session={}]'.format(os.getpid(), details.session)
16 |
17 | yield self.register(self.add2,
18 | u'com.example.add2',
19 | options=RegisterOptions(invoke=u'roundrobin'))
20 |
21 | self.log.info('{ident}.add2 registered', ident=self._ident)
22 |
23 | def add2(self, a, b):
24 | self.log.info('{ident}.add2(a={a} b={b}) called', ident=self._ident, a=a, b=b)
25 | return {u'result': a + b, u'ident': self._ident}
26 |
--------------------------------------------------------------------------------
/test/test_backend/cf2/backend.py:
--------------------------------------------------------------------------------
1 | # Copyright (c) typedef int GmbH, licensed under The MIT License (MIT)
2 |
3 | import os
4 |
5 | from twisted.internet.defer import inlineCallbacks
6 |
7 | from autobahn.wamp.types import RegisterOptions
8 | from autobahn.twisted.wamp import ApplicationSession, ApplicationRunner
9 |
10 |
11 | class MyComponent(ApplicationSession):
12 |
13 | @inlineCallbacks
14 | def onJoin(self, details):
15 | self._ident = 'MyComponent[pid={}, session={}]'.format(os.getpid(), details.session)
16 |
17 | yield self.register(self.add2,
18 | u'com.example.add2',
19 | options=RegisterOptions(invoke=u'roundrobin'))
20 |
21 | self.log.info('{ident}.add2 registered', ident=self._ident)
22 |
23 | def add2(self, a, b):
24 | self.log.info('{ident}.add2(a={a} b={b}) called', ident=self._ident, a=a, b=b)
25 | return {u'result': a + b, u'ident': self._ident}
26 |
--------------------------------------------------------------------------------
/test/test_jupyter/Dockerfile:
--------------------------------------------------------------------------------
1 | # Docker image based on Jupyter Python stack with preinstalled CrossbarFX integration
2 | # https://jupyter-docker-stacks.readthedocs.io/en/latest/using/selecting.html#jupyter-tensorflow-notebook
3 |
4 | FROM jupyter/tensorflow-notebook
5 |
6 | RUN pip install -U pip && pip install autobahn[asyncio] zlmdb
7 |
--------------------------------------------------------------------------------
/test/test_jupyter/Makefile:
--------------------------------------------------------------------------------
1 | default:
2 | @echo "targets: build run"
3 |
4 | build:
5 | docker build --rm -t my-crossbarfx-notebook .
6 |
7 | run:
8 | docker run \
9 | -p 8888:8888 \
10 | -v /some/host/folder/for/work:/home/jovyan/work \
11 | --user $UID --group-add users \
12 | my-crossbarfx-notebook
13 |
--------------------------------------------------------------------------------
/test/test_nodelog/test_usage.py:
--------------------------------------------------------------------------------
1 | DBFILE = '../cfc/.crossbar/.db-mrealm-ceabc374-99b1-4623-95ba-36b5f1f85e5c'
2 | GDBFILE = '../cfc/.crossbar/.db-controller'
3 |
4 | from pprint import pprint
5 | import zlmdb
6 | from crossbar.master.database.mrealmschema import MrealmSchema
7 | from crossbar.master.database.globalschema import GlobalSchema
8 |
9 | db = zlmdb.Database(DBFILE, maxsize=2**30, readonly=False)
10 | schema = MrealmSchema.attach(db)
11 |
12 | gdb = zlmdb.Database(GDBFILE, maxsize=2**30, readonly=False)
13 | gschema = GlobalSchema.attach(gdb)
14 |
15 | with db.begin() as txn:
16 | with gdb.begin() as gtxn:
17 | cnt = schema.mnode_logs.count(txn)
18 | print('{} node log records so far'.format(cnt))
19 |
20 | cnt = gschema.usage.count(gtxn)
21 | print('{} usage records so far'.format(cnt))
22 | for key, rec in gschema.usage.select(gtxn, return_keys=True):
23 | pprint(rec.marshal())
24 |
--------------------------------------------------------------------------------
/test/test_pevents/.gitignore:
--------------------------------------------------------------------------------
1 | .testdb
2 | .ipynb_checkpoints
3 | jupyter/.jupyter/migrated
4 |
--------------------------------------------------------------------------------
/test/test_pevents/README.md:
--------------------------------------------------------------------------------
1 | Generated from Crossbar.io default node template.
2 |
--------------------------------------------------------------------------------
/test/test_pevents/crossbar/subscriber.py:
--------------------------------------------------------------------------------
1 | from autobahn.twisted.wamp import ApplicationSession
2 | from autobahn.wamp.types import SubscribeOptions
3 |
4 |
5 | class SubscriberBackend(ApplicationSession):
6 |
7 | async def onJoin(self, details):
8 | self.log.debug("Connected: {details}", details=details)
9 |
10 | self._cnt_received = 0
11 | N = 100
12 |
13 | def on_event(evt, counter, value3=None, details=None):
14 | self._cnt_received += 1
15 | if self._cnt_received % N == 0:
16 | self.log.info('{session} received {cnt} events so far ..',
17 | session=self._session_id, cnt=self._cnt_received)
18 |
19 | sub = await self.subscribe(on_event, 'com.example.geoservice.',
20 | options=SubscribeOptions(match='prefix', details_arg='details'))
21 |
22 | self.log.info('Subscribed to "com.example.geoservice." with prefix match: {sub}', sub=sub)
23 |
--------------------------------------------------------------------------------
/test/test_pevents/crossbar/web/README.md:
--------------------------------------------------------------------------------
1 | Put your Web files here.
--------------------------------------------------------------------------------
/test/test_pevents/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3'
2 |
3 | services:
4 |
5 | crossbar:
6 | image: crossbario/crossbarfx
7 | restart: always
8 | ports:
9 | - "8080:8080"
10 | network_mode: host
11 | volumes:
12 | - ${PWD}/crossbar/:/node/:rw
13 | environment:
14 | - CFX_URL=wss://cfx.crossbario.com/ws
15 | - CFX_CODE=VXUM-55KG-7C7T
16 |
17 | notebook:
18 | image: crossbario/crossbarfx-notebook
19 | ports:
20 | - "8888:8888"
21 | network_mode: host
22 | volumes:
23 | - ${PWD}/jupyter/notebooks/:/work/notebooks:rw
24 | - ${PWD}/jupyter/.jupyter/:/work/.jupyter:rw
25 | - ${PWD}/crossbar/.testdb:/work/testdb:rw
26 | environment:
27 | - CF_URL=ws://crossbar:8080/ws
28 | - CF_REALM=realm1
29 |
--------------------------------------------------------------------------------
/test/test_pevents/jupyter/Dockerfile.cpy:
--------------------------------------------------------------------------------
1 | # Docker image based on Jupyter Python stack with preinstalled CrossbarFX integration
2 | # https://jupyter-docker-stacks.readthedocs.io/en/latest/using/selecting.html#jupyter-tensorflow-notebook
3 |
4 | FROM jupyter/tensorflow-notebook
5 |
6 | COPY .jupyter/jupyter_notebook_config.py /home/jovyan/.jupyter
7 |
8 | RUN pip install -U pip && pip install aiohttp autobahn[asyncio,twisted,encryption,serialization,scram]
9 |
10 | # RUN pip install zlmdb cfxdb
11 |
12 | COPY .wheels /tmp/
13 |
14 | RUN ls -la /tmp
15 |
16 | RUN pip install --no-cache-dir \
17 | /tmp/zlmdb-*-py2.py3-none-any.whl \
18 | /tmp/cfxdb-*-py2.py3-none-any.whl \
19 | && pip show zlmdb cfxdb
20 |
--------------------------------------------------------------------------------
/test/test_pevents/jupyter/notebooks/.gitignore:
--------------------------------------------------------------------------------
1 | .ipynb_checkpoints
2 | .local
3 |
--------------------------------------------------------------------------------
/test/test_pevents/jupyter/notebooks/Untitled1.txt:
--------------------------------------------------------------------------------
1 |
2 | %matplotlib inline
3 |
4 | import math
5 | import numpy as np
6 | import pandas as pd
7 | import seaborn as sns
8 |
9 | import zlmdb
10 | from cfxdb.schema import ZdbSchema
11 |
12 |
13 |
14 | # create pandas dataframe from data collected in lists
15 | df = pd.DataFrame({
16 | 'x': np.asarray(vec_x, dtype='uint16'),
17 | 'y': np.asarray(vec_y, dtype='uint16'),
18 | 'category': np.asarray(vec_category, dtype='uint8'),
19 | 'value2': np.asarray(vec_value2, dtype='float32')
20 | })
21 |
22 | # compute some basic statistics
23 | df.describe()
24 |
25 |
26 | def trunc(val):
27 | return int(val / 20)
28 |
29 | df3 = pd.DataFrame({
30 | 'x': df['x'].apply(trunc),
31 | 'y': df['y'].apply(trunc),
32 | 'value': df['value2'],
33 | })
34 |
35 | # compute aggregate
36 | df4 = df3.pivot_table(index='x', columns='y', values='value', aggfunc=np.median)
37 |
38 | # draw heatmap
39 | sns.heatmap(df4, annot=True, fmt=".3f")
40 |
41 |
--------------------------------------------------------------------------------
/test/test_pevents/jupyter/red-data-tools.list:
--------------------------------------------------------------------------------
1 | deb [signed-by=/usr/share/keyrings/red-data-tools-keyring.gpg] https://packages.red-data-tools.org/ubuntu/ bionic universe
2 | deb-src [signed-by=/usr/share/keyrings/red-data-tools-keyring.gpg] https://packages.red-data-tools.org/ubuntu/ bionic universe
3 |
--------------------------------------------------------------------------------
/test/test_xbr_marketmaker/Makefile:
--------------------------------------------------------------------------------
1 | .PHONY: crossbar example_provider jupyter ganache
2 |
3 | CROSSBAR=crossbarfx edge
4 |
5 | default:
6 | docker-compose up --build
7 |
8 | clean_db:
9 | rm -f ${PWD}/crossbar/.testdb/*
10 | # rm -f ./crossbar/.crossbar/key.*
11 |
12 | check_db:
13 | du -hs crossbar/.testdb/
14 | ls -la crossbar/.testdb/
15 |
16 | run_crossbar:
17 | $(CROSSBAR) start --cbdir=${PWD}/crossbar/.crossbar
18 |
19 | run_example_provider:
20 | python provider/provider.py
21 |
22 | run_example_consumer:
23 | python consumer/consumer.py
24 |
25 | run_jupyter:
26 | jupyter notebook \
27 | --config=${PWD}/jupyter/.jupyter/jupyter_notebook_config.py \
28 | --notebook-dir=${PWD}/jupyter/notebooks
29 |
30 | run_ganache:
31 | docker run -it --rm --user 1000 --net=host --volume=/tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix:0 --entrypoint=/bin/sh ganache /run.sh
32 |
33 | # https://stackoverflow.com/a/49021109
34 | # docker run -d --rm --device /dev/fuse --cap-add SYS_ADMIN --security-opt apparmor:unconfined
35 | # docker run -it --rm --cap-drop=all --net=host --volume=/tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix:0 ganache
36 |
37 | clean_ganache:
38 | -sudo rm -rf ./ganache/.data/*
39 |
40 | build_ganache:
41 | docker build -t ganache -f ganache/Dockerfile ganache
42 |
--------------------------------------------------------------------------------
/test/test_xbr_marketmaker/crossbar/web/README.md:
--------------------------------------------------------------------------------
1 | Put your Web files here.
--------------------------------------------------------------------------------
/test/test_xbr_marketmaker/ganache/README.md:
--------------------------------------------------------------------------------
1 | Ganache
2 |
--------------------------------------------------------------------------------
/test/test_xbr_marketmaker/work/contract.sol:
--------------------------------------------------------------------------------
1 | pragma solidity ^0.4.25;
2 |
3 | contract StoreVar {
4 |
5 | uint8 public _myVar;
6 | event MyEvent(uint indexed _var);
7 |
8 | function setVar(uint8 _var) public {
9 | _myVar = _var;
10 | emit MyEvent(_var);
11 | }
12 |
13 | function getVar() public view returns (uint8) {
14 | return _myVar;
15 | }
16 |
17 | }
--------------------------------------------------------------------------------
/test/test_xbr_network/.crossbar/xbrnetwork-eth.key:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crossbario/crossbar/d76f83c4eb5bb6f584b485c5160cf634fc44f23f/test/test_xbr_network/.crossbar/xbrnetwork-eth.key
--------------------------------------------------------------------------------
/test/test_xbr_network/env.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | set +e
4 |
5 | export XBR_DEBUG_TOKEN_ADDR=0x254dffcd3277C0b1660F6d42EFbB754edaBAbC2B
6 | export XBR_DEBUG_NETWORK_ADDR=0xC89Ce4735882C9F0f0FE26686c53074E09B0D550
7 | export XBR_DEBUG_DOMAIN_ADDR=0xD833215cBcc3f914bD1C9ece3EE7BF8B14f841bb
8 | export XBR_DEBUG_CATALOG_ADDR=0x9561C133DD8580860B6b7E504bC5Aa500f0f06a7
9 | export XBR_DEBUG_MARKET_ADDR=0xe982E462b094850F12AF94d21D470e21bE9D0E9C
10 | export XBR_DEBUG_CHANNEL_ADDR=0x59d3631c86BbE35EF041872d502F218A39FBa150
11 | export XBR_HDWALLET_SEED="myth like bonus scare over problem client lizard pioneer submit female collect"
12 |
13 |
--------------------------------------------------------------------------------
/test/test_xbr_network/set-xbrnetwork-ethkey.py:
--------------------------------------------------------------------------------
1 | import os
2 | import sys
3 | import binascii
4 |
5 | import txaio
6 | txaio.use_twisted()
7 |
8 | from autobahn.xbr import account_from_seedphrase
9 |
10 |
11 | seedphrase = os.environ['XBR_HDWALLET_SEED']
12 | account_idx = int(sys.argv[1])
13 | keyfile = os.path.abspath(sys.argv[2])
14 |
15 | account = account_from_seedphrase(seedphrase, account_idx)
16 | adr = account.address
17 | pkey_hex = binascii.b2a_hex(account.privateKey).decode()
18 |
19 | print('Using account {} with address {} computed from wallet seedphrase "{}.."'.format(account_idx, adr, seedphrase[:12]))
20 |
21 | with open(keyfile, 'wb') as f:
22 | f.write(account.privateKey)
23 |
24 | print('Success! Private key written to file "{}".'.format(keyfile))
25 |
--------------------------------------------------------------------------------
/versions.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | export CROSSBAR_BUILD_DATE=`date -u +"%Y-%m-%d"`
4 | export CROSSBAR_BUILD_ID=$(date --utc +%Y%m%d)-$(git rev-parse --short HEAD)
5 | export CROSSBAR_VCS_REF=`git rev-parse --short HEAD`
6 | # export CROSSBAR_VCS_REF=`git --git-dir="./.git" rev-list -n 1 v${CROSSBAR_VERSION} --abbrev-commit`
7 | export CROSSBAR_VERSION=$(grep -E '^(__version__)' ./crossbar/_version.py | cut -d ' ' -f3 | sed -e 's|[u"'\'']||g')
8 | export CROSSBAR_EXE_FILENAME="crossbar-linux-amd64-${CROSSBAR_BUILD_ID}"
9 |
10 | echo ""
11 | echo "Build environment configured:"
12 | echo ""
13 | echo " CROSSBAR_BUILD_DATE = ${CROSSBAR_BUILD_DATE}"
14 | echo " CROSSBAR_BUILD_ID = ${CROSSBAR_BUILD_ID}"
15 | echo " CROSSBAR_VCS_REF = ${CROSSBAR_VCS_REF}"
16 | echo " CROSSBAR_VERSION = ${CROSSBAR_VERSION}"
17 | echo " CROSSBAR_EXE_FILENAME = ${CROSSBAR_EXE_FILENAME}"
18 | echo ""
19 |
--------------------------------------------------------------------------------