{"id":15463444,"url":"https://github.com/satunix/pubsub_lib","last_synced_at":"2025-03-28T11:24:10.186Z","repository":{"id":212189011,"uuid":"730909690","full_name":"SATUNIX/PUBSUB_LIB","owner":"SATUNIX","description":"This repository is created to facilitate the development life cycle of messaging in the Dangerous Net program. ","archived":false,"fork":false,"pushed_at":"2023-12-13T05:31:23.000Z","size":678,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-02T11:43:51.684Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SATUNIX.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-13T00:08:49.000Z","updated_at":"2023-12-13T05:30:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"09fde164-0a02-4314-9a74-a18474da6e03","html_url":"https://github.com/SATUNIX/PUBSUB_LIB","commit_stats":null,"previous_names":["satunix/pubsub_lib"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SATUNIX%2FPUBSUB_LIB","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SATUNIX%2FPUBSUB_LIB/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SATUNIX%2FPUBSUB_LIB/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SATUNIX%2FPUBSUB_LIB/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SATUNIX","download_url":"https://codeload.github.com/SATUNIX/PUBSUB_LIB/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246018773,"owners_count":20710442,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-02T00:21:05.633Z","updated_at":"2025-03-28T11:24:10.155Z","avatar_url":"https://github.com/SATUNIX.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PUBSUB_LIB\nThis repository is created to facilitate the development life cycle of messaging in the Dangerous Net program. \n\n## Decentralised Data Transfer Service\n\n1. Use the libp2p pubsub mechanisms to build a chat messaging system, functionality can be thought of like an IRC.\n2. Completely decentralised using the libp2p framework\n3. Library should integrate into the Dangerous Net repository smoothly\n\n## Note\n1. All of the above files are just iterations Ive gone through, not complete programs at all\n2. Alot of work to be done still though 80% of the code we need is in here, just need to organise it and use these functions to build a basic working model.\n\n## Final Product Criteria \n1. Complete Decentralisation\n2. P2P Messaging based off of peer ID's (peer ro peer messaging)\n3. Daemon backround service (/etc/systemd/system/*) creation to handle listening of messages\n4. Network saving all chats, encrypted or not over a cluster network (Clustering to be implemented in Dangerous Net in parralell)\n5. This save of chats allows for previous messages to be downloaded and read by a client even if their node was previously offline\n6. Recommendations for encryption / Group chats secured using dual encryption / name of new group + machine phrase = input + phrase salt = AES cipher key for group chats\n    - AES Key treated as invite code to a group\n    - See the dangerous net main.go encryption functions for inspiration \n7. Intuitive TUI interface (like terminal forms, bubble tea etc) (already started work on this in oldmain.go\n8. Able to integrate directly into Dangerous Net and future Dangerous Net clustering service. \n\n\n## For developers \n\n1. See the latest files / commited files in commit history and or find it in the code list. as of 12/13/23 this is /IPFS_CHAT4/\n\n## Acknowledgements \n1. The libp2p framework and libraries:\n![image](https://github.com/SATUNIX/PUBSUB_LIB/assets/111553838/5fd76b0d-6a1a-4472-ac2e-b06abe5457ef)\n\n2. IPFS\n![image](https://github.com/SATUNIX/PUBSUB_LIB/assets/111553838/04bc7e41-6923-4d4f-99f8-ca6b33bfc3e5)\n\n3. RSA\n![image](https://github.com/SATUNIX/PUBSUB_LIB/assets/111553838/ac1a6815-50bb-48ee-acaa-18291e6eb137)\n\n\n## Below for theorised IPFS implementation instead of libp2p:\nKey Components of the Go Program:\nIPFS Initialization and Configuration:\n\nUse the Go ipfs-http-client library to interact with an IPFS node.\nInitialize the IPFS node with low-power and random port profiles.\nConfigure IPFS settings like PubSub, IPNS, and filestore.\nKey Generation and Identity Management:\n\nUtilize cryptographic libraries in Go to generate GPG key pairs.\nUse IPNS to publish the public key and user nickname.\nMessage Publishing (Sending):\n\nImplement a function to read user input.\nEncrypt messages using the recipient's public key for private messages.\nUse IPFS PubSub (ipfs pubsub pub) to publish messages.\nMessage Subscription (Receiving):\n\nCreate a background process to listen for new messages on the IPFS PubSub topic (ipfs pubsub sub).\nDecrypt and authenticate incoming messages.\nFile Sharing:\n\nImplement file encryption and add encrypted files to IPFS.\nShare the CID and encryption key of the file with other users.\nPeer Discovery and Connection:\n\nUse IPFS's PubSub system for discovering peers.\nImplement functionality to connect to peers (ipfs swarm connect).\nUI and Interaction:\n\nSince Go doesn't have native support for dialog-based UI, consider using a web-based interface or a command-line interface.\nDependency Checks and Path Conversion:\n\nEnsure all dependencies are installed.\nImplement path conversion functions for cross-platform compatibility.\nNetwork Configuration and Cleanup:\n\nConfigure network settings for different modes (LAN/WAN).\nImplement cleanup operations for shutting down the application.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsatunix%2Fpubsub_lib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsatunix%2Fpubsub_lib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsatunix%2Fpubsub_lib/lists"}