Welcome to our MIT App Inventor Community project, where we are thrilled to offer a comprehensive client and server setup for chat applications. This project provides a MIT App Inventor-built chat client and a Java-based chat server that orchestrates encrypted communications.
Chat Server in Java
The heart of our communication platform is a Java chat server, crafted to enable secure message exchanges. It's designed to handle multiple connections, ensuring each message is encrypted and broadcast securely to connected clients.
Key Features:
Concurrent client management with multithreading
Robust AES encryption for message security
Server activity monitoring through console-based logging
How to Run:
Clone or download the server Java files from the repository.
Compile the server with javac ChatServer.java.
Start the server using java ChatServer.
Make sure Java is installed on your system to compile and run the server.
MIT App Inventor Chat Client
Complementing our server is the MIT App Inventor chat client, which offers users a seamless and secure platform to send and receive messages right from their Android devices.
Highlights:
User-friendly interface for message exchange
End-to-end encryption for privacy and security
Seamless integration with the Java chat server
How to Use:
Access the MIT App Inventor project and tailor it to your needs.
Build the project within MIT App Inventor to generate an Android-compatible APK.
Deploy the APK on your Android device and engage in secure conversations.
Enhancing Security
To further solidify the application's security posture, we're looking into adding SSL/TLS encryption for communication and incorporating a secure protocol for the exchange of AES keys.
Next Steps:
Implementation of SSL/TLS within the Java server for enhanced encryption.
Integration of a secure key exchange mechanism.
Development of user authentication for controlled server access.
Expansion of client functionalities, including group chat and file sharing capabilities.
Community Collaboration
We warmly invite the MIT App Inventor community to join us in refining and augmenting this chat application. Whether it's contributing code, suggesting features, or enhancing security, your participation is what will drive this project forward.
Together, we can craft a secure, feature-rich chat application that serves the diverse needs of the MIT App Inventor community. We're excited to see your contributions and to work collectively on this journey.
I have done some testing, using Companion App on Android 13
Good of you to try my chat example, but it is not setup correctly to work. I reorganised things a bit but:
Client:
SendMessage does not work, no error message returned, nothing shown in server output ?
SendMessageWithDetails only sends/returns a uid, no IP or timestamp?
Decrypting an encrypted message requires me to split at comma the uid and the encrypted message in order to decrypt the message?
Server:
I note I have to recompile the server if I want to change the port number (doing this inside the code) - Is there a required range for the port number?
People will need to know that they have to provide "just" the IP address of their server location.
I assume that nothing is saved on the server, and all chat is lost if server is stopped?
is there a log for the server on the host machine ?
Other:
Can you please also provide an extension file (aix) for people to use
This topic should really be in Extensions, but perhaps we should work on things here until it is fixed.
Thanks for the observations! The project is still in its infancy and I will be happy with your help and that of other devs... Remember to configure the IP on the client with the same IP as the server is hosted.
Note: You must compile and run the server before starting the client. I tested the server on a virtual machine hosted on GalaxyGate with Ubuntu 22.
SendMessageWithDetails does work but only sends a UID, no timestamp or IP is sent
SendMessageWithDetails when message encrypted, requires some text manipulation to return the message received
Do you see the same behaviour ?
Your ChatServer only seems to "serve" / "listen" on the localhost/local network? I tried loading it on my online server, opened the correct port with ufw, but no connection is made, nmap reports that the port is filtered (no-response), which indicates that nothing is listening on that port for external connections. I ran the ChatServer as root.
Now what is needed is the ability to run the ChatServer on a remote server (online), otherwise all I can do with it is send messages to myself and my dog