├── .DS_Store ├── .github ├── FUNDING.yml └── release-drafter.yml ├── .gitignore ├── .goreleaser.yml ├── Bindings ├── Client.go ├── Haskell │ ├── .dev_run.sh │ ├── .gen_docs.sh │ ├── .gitignore │ ├── .mhsi │ ├── README.md │ ├── cabal.project │ ├── flake.lock │ ├── flake.nix │ ├── lib │ │ ├── API.hs │ │ ├── CLI.hs │ │ ├── Engine.hs │ │ ├── Error.hs │ │ ├── JSON.hs │ │ └── P2PRC.hs │ ├── p2prc.cabal │ ├── project.nix │ └── src │ │ └── Main.hs ├── docs.md └── python │ ├── .DS_Store │ ├── library.py │ ├── requirements.txt │ └── test.py ├── CITATION.cff ├── CNAME ├── CONTRIBUTE.md ├── Docs ├── .gitignore ├── Colored-On-Light-Image.png ├── DocsDeprecated │ ├── Abstractions.md │ ├── Abstractions.org │ ├── Bindings.md │ ├── Bindings.org │ ├── CliImplementation.md │ ├── CliImplementation.org │ ├── Client.md │ ├── Client.org │ ├── ClientArchitecture.md │ ├── ClientArchitecture.org │ ├── ClientImplementation.md │ ├── ClientImplementation.org │ ├── ConfigImplementation.md │ ├── ConfigImplementation.org │ ├── DesignArchtectureIntro.md │ ├── DesignArchtectureIntro.org │ ├── DomainNameMappingsImplementation.md │ ├── DomainNameMappingsImplementation.org │ ├── Implementation.md │ ├── Implementation.org │ ├── Installation.md │ ├── Installation.org │ ├── Introduction.md │ ├── Introduction.org │ ├── NAT-Traveral.md │ ├── NAT-Traveral.org │ ├── P2P-testing.md │ ├── P2P-testing.org │ ├── P2P.md │ ├── P2P.org │ ├── P2PArchitecture.md │ ├── P2PArchitecture.org │ ├── P2PImplementation.md │ ├── P2PImplementation.org │ ├── PluginImplementation.md │ ├── PluginImplementation.org │ ├── README.md │ ├── README.org │ ├── ServerArchitecture.md │ ├── ServerArchitecture.md.org │ ├── ServerImplementation.md │ ├── ServerImplementation.md.org │ ├── Virtualization │ └── docs.org ├── diagrams │ └── P2PRCRemoteNodes.drawio ├── haskell │ ├── P2PRC.html │ ├── README.md │ ├── doc-index.html │ ├── haddock-bundle.min.js │ ├── index.html │ ├── linuwial.css │ ├── meta.json │ ├── p2prc.haddock │ ├── quick-jump.css │ └── synopsis.png ├── images │ ├── NumOfHops.png │ ├── P2PRCRemoteNodes.png │ ├── clientmoduleArch.png │ ├── p2pmoduleArch.png │ ├── p2prclogo.png │ └── servermoduleArch.png ├── index.html ├── index.org ├── kill-docs.sh ├── run-docs.sh ├── staticServer.go └── style.css ├── LICENSE ├── Makefile ├── README.md ├── Simulation └── simulation.sh ├── _config.yml ├── abstractions ├── base.go └── docs.md ├── artwork ├── .DS_Store ├── README.md ├── embed.svg ├── index.html └── p2prc-logos │ ├── .DS_Store │ ├── Black-Image.png │ ├── Black-Vector.svg │ ├── Colored-Image.png │ ├── Colored-On-Dark-Image.png │ ├── Colored-On-Dark-Vector.svg │ ├── Colored-On-Light-Image.png │ ├── Colored-On-Light-Vector.svg │ ├── Colored-Vector.svg │ ├── P2PRCHaskell.png │ ├── White-Image.png │ └── White-Vector.svg ├── build-bindings.sh ├── build-haskell.sh ├── build-python-package.sh ├── client ├── GroupTrackContainer.go ├── GroupTrackContainer_test.go ├── MAPPort.go ├── ServerSpecs.go ├── TrackContainers.go ├── TrackContianers_test.go ├── clientIPTable │ ├── AddCustomInformationToIPTable.go │ ├── Iptable.go │ ├── docs.md │ └── iptable_test.go ├── container.go ├── docs.md ├── grouptrackcontainers.json └── trackcontainers.json ├── cmd ├── action.go ├── docs.md └── flags.go ├── config ├── config.go ├── docs.md └── generate │ ├── config_test.go │ ├── docs.md │ ├── generate.go │ ├── generateCertificate.go │ ├── generateFiles.go │ ├── gernerate_test.go │ └── helperFunctions.go ├── default.nix ├── flake.lock ├── flake.nix ├── go.mod ├── go.sum ├── gomod2nix.toml ├── install-binary.bat ├── install-binary.sh ├── install.bat ├── install.sh ├── main.go ├── main.md ├── nix ├── overlays │ └── bindings.nix └── templates │ └── haskell │ ├── flake.lock │ └── flake.nix ├── p2p ├── README ├── docs.md ├── frp │ ├── client.go │ ├── docs.md │ ├── server.go │ └── server_test.go ├── ip_table.json ├── iptable.go ├── iptable_test.go ├── speedtest.go ├── speedtest_test.go ├── ssh_autorisation.go ├── testingMetrics.go ├── upnp.go └── upnp_test.go ├── plugin ├── .dockerignore ├── .gitignore ├── README.md ├── TestAnsible │ ├── description.txt │ ├── hosts │ └── site.yml ├── docs.md ├── generate_test_case.sh ├── packageManager.go ├── plugin.go └── plugin_test.go ├── server ├── .DS_Store ├── ReverseProxy.go ├── docker │ ├── .DS_Store │ ├── Makefile │ ├── README │ ├── docker.go │ ├── docker_test.go │ ├── dockprom │ │ ├── LICENSE │ │ ├── README.md │ │ ├── alertmanager │ │ │ └── config.yml │ │ ├── caddy │ │ │ └── Caddyfile │ │ ├── config │ │ ├── docker-compose.exporters.yml │ │ ├── docker-compose.yml │ │ ├── grafana │ │ │ └── provisioning │ │ │ │ ├── dashboards │ │ │ │ ├── dashboard.yml │ │ │ │ ├── docker_containers.json │ │ │ │ ├── docker_host.json │ │ │ │ ├── monitor_services.json │ │ │ │ └── nginx_container.json │ │ │ │ └── datasources │ │ │ │ └── datasource.yml │ │ ├── helpers │ │ │ └── aws │ │ │ │ ├── README.md │ │ │ │ ├── cadvisor_ecs_task_definition.json │ │ │ │ ├── node_exporter_task_definition.json │ │ │ │ └── prometheus.yml │ │ ├── prometheus │ │ │ ├── alert.rules │ │ │ └── prometheus.yml │ │ └── screens │ │ │ ├── Grafana_Docker_Containers.png │ │ │ ├── Grafana_Docker_Host.png │ │ │ ├── Grafana_Prometheus.png │ │ │ └── Slack_Notifications.png │ ├── docs.md │ └── kill-containers.sh ├── docs.md ├── gopsutil.go ├── gpu.go ├── gpu_test.go ├── server.go └── upload_file.go ├── shell.nix └── wasm └── p2prc.wasm /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akilan1999/p2p-rendering-computation/36930be8e480877414fec654169b9b2969168db0/.DS_Store -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: akilan1999 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.github/release-drafter.yml: -------------------------------------------------------------------------------- 1 | name: Release Drafter 2 | 3 | on: 4 | push: 5 | # branches to consider in the event; optional, defaults to all 6 | branches: 7 | - master 8 | # pull_request event is required only for autolabeler 9 | pull_request: 10 | # Only following types are handled by the action, but one can default to all as well 11 | types: [opened, reopened, synchronize] 12 | 13 | jobs: 14 | update_release_draft: 15 | runs-on: ubuntu-latest 16 | steps: 17 | # (Optional) GitHub Enterprise requires GHE_HOST variable set 18 | #- name: Set GHE_HOST 19 | # run: | 20 | # echo "GHE_HOST=${GITHUB_SERVER_URL##https:\/\/}" >> $GITHUB_ENV 21 | 22 | # Drafts your next Release notes as Pull Requests are merged into "master" 23 | - uses: release-drafter/release-drafter@v5 24 | # (Optional) specify config name to use, relative to .github/. Default: release-drafter.yml 25 | # with: 26 | # config-name: my-config.yml 27 | # disable-autolabeler: true 28 | env: 29 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 30 | 31 | name-template: 'v$RESOLVED_VERSION' 32 | tag-template: 'v$RESOLVED_VERSION' 33 | categories: 34 | - title: '🚀 Features' 35 | labels: 36 | - 'feature' 37 | - 'enhancement' 38 | - title: '🐛 Bug Fixes' 39 | labels: 40 | - 'fix' 41 | - 'bugfix' 42 | - 'bug' 43 | - title: '🧰 Maintenance' 44 | label: 'chore' 45 | 46 | change-template: '- $TITLE @$AUTHOR (#$NUMBER)' 47 | change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks. 48 | version-resolver: 49 | major: 50 | labels: 51 | - 'major' 52 | minor: 53 | labels: 54 | - 'minor' 55 | patch: 56 | labels: 57 | - 'patch' 58 | default: patch 59 | template: | 60 | ## Changes 61 | 62 | $CHANGES 63 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | vendor/ 3 | bin/ 4 | p2p-rendering/ 5 | main 6 | server/docker/__pycache__ 7 | p2p-rendering-computation 8 | p2prc 9 | config.json 10 | .vscode/ 11 | 12 | #ignore generated iptables 13 | p2p/iptable/ 14 | #ignore plugins added 15 | plugin/deploy/ 16 | #ignore track container file 17 | client/trackcontainers/ 18 | # Test generated files 19 | generate/p2prctest 20 | generate/Test 21 | #ignore windows exe files 22 | *.exe 23 | dist/ 24 | # Ignore any sort of logs 25 | logs/ 26 | 27 | # ignore docker image files 28 | server/docker/containers/ 29 | *.h 30 | *.so 31 | 32 | # generic folder to ignore 33 | export/ 34 | exports/ 35 | 36 | # Any testing file 37 | *test 38 | 39 | # Ignore public and private keys 40 | p2prc.publicKey 41 | p2prc.privateKey 42 | p2prc.PublicKeyBareMetal 43 | 44 | # Ignore pem files 45 | *.pem 46 | 47 | # ignore virtual env file 48 | venv 49 | 50 | # Nix and Nix flake files 51 | result 52 | result-* 53 | -------------------------------------------------------------------------------- /.goreleaser.yml: -------------------------------------------------------------------------------- 1 | # This is an example .goreleaser.yml file with some sensible defaults. 2 | # Make sure to check the documentation at https://goreleaser.com 3 | before: 4 | hooks: 5 | # You may remove this if you don't use go modules. 6 | - go mod tidy 7 | # you may remove this if you don't need go generate 8 | - go generate ./... 9 | builds: 10 | - env: 11 | - CGO_ENABLED=0 12 | goos: 13 | - linux 14 | - windows 15 | - darwin 16 | archives: 17 | - replacements: 18 | darwin: Darwin 19 | linux: Linux 20 | windows: Windows 21 | 386: i386 22 | amd64: x86_64 23 | checksum: 24 | name_template: 'checksums.txt' 25 | snapshot: 26 | name_template: "{{ incpatch .Version }}-next" 27 | changelog: 28 | sort: asc 29 | filters: 30 | exclude: 31 | - '^docs:' 32 | - '^test:' 33 | -------------------------------------------------------------------------------- /Bindings/Haskell/.dev_run.sh: -------------------------------------------------------------------------------- 1 | rm -rf *pem client/ plugin/ server/ p2p/ p2prc.[pP]* config.json dist-newstyle/ &&\ 2 | cabal clean &&\ 3 | cabal run 4 | -------------------------------------------------------------------------------- /Bindings/Haskell/.gen_docs.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | rm -rf dist-newstyle/ 4 | 5 | cabal haddock 6 | 7 | rm -rf ../../Docs/haskell 8 | 9 | cp -r \ 10 | ./dist-newstyle/build/x86_64-linux/ghc-9.6.6/p2prc-0.1.0.0/doc/html/p2prc/ \ 11 | ../../Docs/haskell 12 | -------------------------------------------------------------------------------- /Bindings/Haskell/.gitignore: -------------------------------------------------------------------------------- 1 | CHANGELOG.md 2 | client 3 | config.json 4 | dist-newstyle 5 | p2p 6 | p2prc.privateKey 7 | p2prc.PublicKeyBareMetal 8 | plugin 9 | server 10 | 11 | haddocks/ 12 | 13 | key.pem 14 | cert.pem 15 | cabal.project.local 16 | -------------------------------------------------------------------------------- /Bindings/Haskell/.mhsi: -------------------------------------------------------------------------------- 1 | exit 2 | Exit 3 | -------------------------------------------------------------------------------- /Bindings/Haskell/README.md: -------------------------------------------------------------------------------- 1 |
Implements a client interface to the P2PRC networking runtime
Modules
p2prc-0.1.0.0