Giter Club home page Giter Club logo

core_messenger's Introduction

Core Messenger

Logo

What is this?

Core messenger is yet another P2P messenger with optional servers that can be used as relay node or chatroom. It's based on core_client, and it means that everyone can try to create their own messenger using it. Core_proto is, despite being under heavy development, very flexible in terms of behaviour customisation. It supports plugins, which basically just modify incoming/outcoming data and react to it.

Possibilities

  • Complete anonymity (no ids, phone numbers, accounts, just username and port)
  • Up to 1024 simultaneous connections (possibly will be expanded in the future)
  • Thanks to servers, can work under NAT (more solutions are planned)
  • More to come with time (just try it now)

Short FAQ

Q: Where are my prebuilt binaries for Windows, Linux and MacOS?

A: This product is now very unstable, untested (testers needed), and actively developed, so I see no reason to build new binaries each and every feature/commit/fix/etc. as for now. In the future, when this project will reach alpha state, I will setup automatic build and deploy to Releases section.

Q: Why are you using self-made protocol, library etc.?

A: I'm a programmer (obviously), and I truly enjoy programming when I really create something new from ground up. Also making my own protocol/library helps me to learn a lot about different things, which is true pleasure. I could use such things as libp2p and MTProto, but what's the point of making basically another GUI for existing and widely used tools?

Q: Is it safe? Do you have any encryption implemented or at least in plans?

A: I have AES256 encryption at packet level implemented, as per this commit, but as you can see it from the commit message, it's experimental. My main goal now is to build flexible and powerful plugin system, so anyone with some python coding skills can create its own plugin. Is it safe? Well, you can enable AES256 plugin and change secret key (don't forget to tell it to opponent), and your messaging will be safe. Again, more security coming soon (encrypted database too).

Requirements and Installation

Requirements

  • python 3.6 or above
  • Qt5 installed in the system (usually you don't need to care about this)

Depends on

  • PyQt5
  • pycryptodome

Installation

  • git clone https://github.com/arterialist/core_messenger.git
  • cd core_messenger
  • pip3 install -r requirements.txt

Done! Launch with python3 main.py

Other Info

Useful Links

Author: Arterialist GitHub | Telegram

core_messenger's People

Contributors

arterialist avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

core_messenger's Issues

Crash if no route to host

Stack trace:

Traceback (most recent call last):
  File "core_messenger/widgets/dialogs/dialogs_head.py", line 32, in <lambda>
    self.new_dialog_button.clicked.connect(lambda: new_dialog_click_callback(self))
  File "core_messenger/callback/callbacks.py", line 36, in new_dialog_click_callback
    client_base.p2p_connect(host, int(port))
  File "core_messenger/client/client_base.py", line 128, in p2p_connect
    sock.connect(current_connection_address)
OSError: [Errno 113] No route to host

Add Message Editing

Add ability to edit message

  • from context menu
  • with shortcut (arrow up or smth)

Add "edited" indicator (optional)

Fix UI Freeze While Connecting

Currently main socket is in blocking mode, which may lead to UI freezes, especially on big timeout. It's critical to move socket to separate thread.

Add Draft Suport

Save typed message when switching to another dialog and restore draft as well

Add Theming Support

User should be able to apply global theme stored in ctheme file.

Theme can be applied after restart

Add Full Nicknames Support

  • Send Packet with nickname after receiving info request
  • Display nickname in dialogs list
  • Display nickname in "delete message" dialog

Optional: display nickname above message's text in opened dialog

Crash after deleting message

App crashes when user edits message and tries to delete it.

Stack trace:

Traceback (most recent call last):
  File "main.py", line 271, in <lambda>
    delete_action.triggered.connect(lambda: delete_message_item_selected_callback(self.messages_list, message_item))
  File "core_messenger/callback/callbacks.py", line 173, in delete_message_item_selected_callback
    client_base.send_message(Packet(action=DeleteMessageAction(), message=delete_message_msg))
  File "core_messenger/client/client_base.py", line 174, in send_message
    layers.socket_send_data(current_connection, message, loaded_modules)
  File "core_messenger/client/layers.py", line 9, in socket_send_data
    what = action.process(what)
  File "core_messenger/client/modules/default_modules.py", line 38, in process
    data.message.text = base64.b64encode(data.message.text.encode()).decode()
AttributeError: 'NoneType' object has no attribute 'encode'

Reason: no text field check in Base64EncodeModule

Add Logging Channels

Add logging layer and ability to add, remove, enable and disable specific logging channels (SQL logs for example)

Fix Rare App Crash

App crashes sometimes when pressing OK button of "Invalid message" dialog. It's caused by incorrect work with threads and window object (probably)

Steps to reproduce:

  1. open app and enter all stuff
  2. toggle listening on
  3. connect from terminal to 127.0.0.1:port
  4. accept connection in app
  5. type smth in terminal and smash enter
  6. repeat step 5 until app crashes

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.