LiMe
The Li Xin (Justin Lee) Messenger
LiMe is a communication application implemented in Java that allows you to keep in touch and exchange files with friends anytime, anywhere. You can also quickly deploy a custom LiMe server for private communication.
Tech Reviews
- LiMe is developed in the MVC design pattern.
- We use Swing to implement the UI layer.
- The persistence layer is implemented with JDBC.
- As for the database, we chose MySQL.
- The model layer is strictly following JavaBean specification requirements.
- Fully comply with the code specification in the Alibaba Java Coding Guidelines,
- Each layer achieves high cohesion and low coupling, which significantly leverages the scalability and the maintainability of this project.
Requirements
- JDK 19
This project is compiled with Temurin.
openjdk 19.0.2 2023-01-17 OpenJDK Runtime Environment Temurin-19.0.2+7 (build 19.0.2+7) OpenJDK 64-Bit Server VM Temurin-19.0.2+7 (build 19.0.2+7, mixed mode)
If you would like to adapt this project to business use.
Please use this project withTemurin
,Microsoft OpenJDK
,OpenJDK
or any Non-Oracle JDK, Thanks.
Code Guidelines
This repository follows the guideline of the Alibaba Java Coding Guidelines.
For more information, please refer to the Alibaba Java Coding Guidelines:
- English Version: Alibaba Java Coding Guidelines
Version
-
C_v 1.0.2
-
S_v 1.0.2
_______________________ / Finally, v1.0.2! \ | _ _ __ __ | | | | (_) \/ | ___ | | | | | | |\/| |/ _ \ | | | |___| | | | | __/ | | |_____|_|_| |_|\___| | \ / ----------------------- \ ^__^ \ (oo)\_______ (__)\ LiMoo )\/\ ||----w | || ||
Configuring
Client Configuring
Fill client.properties
like this:
#LiMe Config file
lime.cipher.key=<16_CHAR_STRING>
lime.host=<HOST_NAME>
lime.port=<PORT>
Server Configuring
Fill server.properties
like this:
#LiMe Server Config file
server.cipher.key=<16_CHAR_STRING>
server.db.db=<DB_NAME>
server.db.host=<DB_HOST_NAME>
server.db.password=<DB_PASSWORD>
server.db.port=<DB_PORT>
server.db.username=<DB_USERNAME>
#Only Supports Gmail Currently, you could try others.
server.email.domain=gmail.com
server.email.password=<EMAIL_PASSWORD>
server.email.user=<EMAIL_USERNAME>
server.port=<PORT>
Must be equal
lime.port
andserver.port
lime.cipher.key
andserver.cipher.key
Platform compatibility:
- macOS
If you would like to use it with windows, you should clone this repo and rebuild it with windows.
Protocol
To enable a more efficient and secure LiMe, we set up an application layer protocol.
The Server GUI
Client
The Login GUI and the welcome page as well.
The Register GUI
The User Agreement (HTML parsing)
The Chat GUI of user @lixin, the friend list is on the left side of the panel
The Chat GUI of user @test
The Group Chat
The File Transmission
Data persistence
MySQL table structure
Emails you might get from the server
Registration Confirmation
Banned Notification
Password Reset
TODO
- Pure cli version of LiMe Server to enable deployment on linux headless server.
- Adapt Travis CI
- Rebuild The Protocol with Restful API (json)
- Gradle the project
- Use HTML to render the email content
- Use
Hibernate
orMybatis
as a persistence framework - The process bar for the file transmission
- A fancy website for LiMe
- Improve concurrence
- Store all sensitive info in config files
- Enable custom host and port
- Migrate to
Temurin
- Migrate to Non-Oracle JDK or
OpenJDK
- Fix the server thread pool malfunction issue
- Merge all the services out of
P.R.Chinato provide a global-based service. - Store the password on the server with MD5
- Local password storage encrypted with AES using a random key, the random key stored with AES digested with MD5
- Transport the message with AES and keys digested with MD5
- Open group chat for all users
- Enable user to reset the password via a server-sent Email
- Redirect LiMe to the new domain name
- Email should be a unique key (LiMeSeedRecoverPassword)
- The file transmission function
- Use the database to validate and manage the user
- Blur Agreement Frame
- HTML parsing and rendering
- Version number increase
Test Quote
Fate Whispers To The Warrior,
“You Cannot Withstand This Storm.”
And The Warrior Whispers Back,
“I Am The Storm”
Justin Lee!
Made with ❤ by™ and © 1997-2022 Justin Lee. All Rights Reserved. License Agreement