• Stars
    star
    114
  • Rank 308,031 (Top 7 %)
  • Language
    Java
  • License
    MIT License
  • Created about 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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.

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 with Temurin, 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:

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 and server.port
  • lime.cipher.key and server.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

The Server GUI

Client

The Login GUI and the welcome page as well.

The Login GUI and the welcome page as well.

The Register GUI

The Register GUI

The User Agreement (HTML parsing)

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 @lixin, the friend list is on the left side of the panel

The Chat GUI of user @test

The Chat GUI of user @test

The Group Chat

The Group Chat

The File Transmission

The File Transmission

Data persistence

MySQL table structure

MySQL table structure

Emails you might get from the server

Registration Confirmation

Registration Confirmation

Banned Notification

Banned Notification

Password Reset

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 or Mybatis 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.China to 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”

Made with ❤ by Justin Lee!

™ and © 1997-2022 Justin Lee. All Rights Reserved. License Agreement

More Repositories

1

Fuck-Tencent

作为一个学习党,你还总是被室友的打游戏的机械键盘声音吵到么,你还总是被室友在游戏里要被杀死的绝望叫声所震撼么,你还被室友输了游戏以后久久不能释怀的喃喃自语所心烦么?不要犹豫了,点进来!点一下,你点不到吃亏;点一下,你点不到上当!来吧朋友,让我们还你一片没有小学生的蓝天!
Python
178
star
2

dumb-chatbot

A dumb chat bot implemented using PyTorch and trained with Cornell Movie Dialogue
Python
163
star
3

FloweringTree

Plain, old and simple Flowering Tree Class
Python
112
star
4

LiAg

LiAg (LiXin Avatar Generator) is an open source 3D avatar modeling software implemented in React.js and WebGL, which provides web side 3D avatar modeling and rendering service, and users can export the avatars into STL files which can be used for 3D printing.
JavaScript
111
star
5

Library-Management

数据库大作业——图书馆管理系统前端:BootCamp+JQuery 后端:Spring
JavaScript
110
star
6

LiXinCompiler

参考自龙书上的语言,自己实现了一个编译器的前端。
Java
101
star
7

weather-dashboard

ReactJS based weather dashboard runs on my RSBP
JavaScript
79
star
8

iMelody

A social Beat Sequencer through which you can share your melodies with your friends.
Java
71
star
9

LiCMS

LiCMS (Lixin Content Management System) is a content management system used for blogging, implemented with Flask.
Python
17
star
10

Super-Basic-C-stuff

大一的C语言课程,基础算法示例。
C
7
star
11

Fake-Tencent

A Instant Messaging Software not intended to take the place of Tencnent QQ or WeChat
Swift
5
star
12

realJustinLee.github.io

This is the source code of my presonal blog. And here goes the link ->
HTML
5
star
13

Cryption

加密解密与算法测试
C#
5
star
14

Computer-Network

<钱权老师的网络课> 的各种研讨作业
C
4
star
15

MFC-Sales-System

这两天临时起义拿起MFC随意写了点东西
C++
4
star
16

nester_lixin

A simple printer of nested lists
Python
4
star
17

FakeEleme

安卓大作业
Java
4
star
18

Concentration

The implementation of the Concentration Game in CS193p Stanford
Swift
4
star
19

luci-theme-fruitbingo

A theme for HomeLede and Openwrt.
CSS
3
star
20

Game_of_Life

John Conway, inventor of the Game of Life, has died of COVID-19. In his honor I'm making this Game of Life project.
JavaScript
2
star
21

realJustinLee

1
star
22

dayz-server-manager

Slightly modded dayz server manager to ease my usage
PowerShell
1
star
23

LiUPS

Lixin Universal Proxy Server
Shell
1
star
24

markdown_resume

My MarkDown resume
1
star