All Projects → timboudreau → scamper-chat

timboudreau / scamper-chat

Licence: other
An IRC-like chat client and server using SCTP, based on Scamper+Netty

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to scamper-chat

scamper
A toolkit for creating SCTP servers and clients
Stars: ✭ 22 (+69.23%)
Mutual labels:  netty, sctp
zrp
zrp 是使用Java开发的一款基于Netty的内网穿透工具,主要用于将内网服务反向代理到公网访问。目前支持所有TCP上层协议的代理,包括但不限于HTTP、SSH、FTP、TELNET、SMTP、POP3、DNS等。
Stars: ✭ 32 (+146.15%)
Mutual labels:  netty
codes-scratch-zookeeper-netty
zk + netty 实现集群节点文件同步服务
Stars: ✭ 29 (+123.08%)
Mutual labels:  netty
lksctp-tools
The Linux SCTP helper library
Stars: ✭ 75 (+476.92%)
Mutual labels:  sctp
smartacus-mqtt-broker
smartacus-mqtt-broker is a Java-based open source MQTT broker that fully supports MQTT 3.x .Using Netty 4.1.37
Stars: ✭ 25 (+92.31%)
Mutual labels:  netty
netty-mqtt-client
No description or website provided.
Stars: ✭ 31 (+138.46%)
Mutual labels:  netty
JavaHub
Java程序员学习之路,持续更新原创内容,欢迎Star
Stars: ✭ 27 (+107.69%)
Mutual labels:  netty
gateway
API proxy gateway base on netty and okHttp.
Stars: ✭ 21 (+61.54%)
Mutual labels:  netty
qynat-spring-boot-starter
A springboot-starter that can achieve Intranet penetration. 一款可以实现内网穿透的springboot-starter。
Stars: ✭ 65 (+400%)
Mutual labels:  netty
spring-boot-netty
Spring Boot integration with Netty
Stars: ✭ 51 (+292.31%)
Mutual labels:  netty
packetevents
PacketEvents is a powerful packet library. Our packet wrappers are efficient and easy to use. We support many protocol versions. (1.8+)
Stars: ✭ 235 (+1707.69%)
Mutual labels:  netty
thinglinks
开源ThingLinks物联网一体化平台,高性能、高吞吐量、高扩展性的物联网平台!单机可以支持百万链接,同时支持自定义扩展功能,功能非常强大,采用netty作为通信层组件,支持插件化开发集成!
Stars: ✭ 338 (+2500%)
Mutual labels:  netty
fastim
🚀基于Netty高可用分布式即时通讯系统,支持长连接网关管理、单聊、群聊、离线消息、消息推送消息、消息已读未读、消息未读数、红包、消息漫游等功能,支持集群部署的分布式架构。
Stars: ✭ 111 (+753.85%)
Mutual labels:  netty
NioSmtpClient
Smtp Client based on Netty
Stars: ✭ 25 (+92.31%)
Mutual labels:  netty
mmqtt
An Open-Source, Distributed MQTT Broker for IoT.
Stars: ✭ 58 (+346.15%)
Mutual labels:  netty
rulegin
基于JavaScript Engine的轻量级规则引擎系统,重构于开源IOT项目thingboard
Stars: ✭ 100 (+669.23%)
Mutual labels:  netty
xpllyn
个人网站项目。使用spring-boot搭建,集合了博客、书籍下载、留言、github page查询、Netty+WebSocket搭建的Web网页聊天室等功能。其中github page查询工具使用了github的api,Web聊天室使用Netty+Websocket+Redis+MySQL搭建服务,使用Shiro安全框架实现身份验证/登录,采用MySql作为网站的数据库,使用Redis用于聊天记录缓存,实现了群聊、单聊、查询用户、添加好友、聊天记录等功能。
Stars: ✭ 21 (+61.54%)
Mutual labels:  netty
SCTP NKE HighSierra
A version of the SCTP NKE running on Mac OS X 10.13 (High Sierra)
Stars: ✭ 15 (+15.38%)
Mutual labels:  sctp
netty-in-action-cn
Netty In Action 中文版
Stars: ✭ 1,389 (+10584.62%)
Mutual labels:  netty
device-simulator
基于netty的设备模拟器,模拟设备消息收发,压力测试。
Stars: ✭ 35 (+169.23%)
Mutual labels:  netty

Scamper Chat

This is an IRC-like chat application consisting of a server, a command-line client and some libraries for shared code. It uses SCTP rather than TCP in its wire protocol, and the scamper library that makes it easy to write protocols using SCTP.

Features

  • Multiple chat rooms, IRC-style, with similar commands
  • Ansi-colored shell client
  • End-to-end Blowfish encryption on password-protected rooms - meaning that the server cannot decrypt the chat messages (the server does store a SHA-512 hash of the password to reject access, but has no way to decrypt messages).

This project serves as a demo of how to write servers with Scamper, in addition to being usable in its own right.

Requirements

If either of the latter are missing, the client will let you know.

Configuration

The client by default attempts to connect to a public server that is up for the time being (no promises), so it can be run with no arguments:

java -jar scamper-chat-client.jar

To connect to a different server, pass --port and --host on the command-line, e.g.

java -jar scamper-chat-client.jar --port 8007 --host foo.bar.com

The server can be configured similarly using command-line options

Subprojects

  • Scamper Hub - the server - build and run with java -jar
  • Scamper Chat CLI - command-line ansi-colored chat client featuring IRC-like commands (/join, /who, /rooms, etc.) - also build and run with java -jar

The rest are supporting projects for those:

  • Scamper Chat Common - POJO data types used in the wire protocol, and base classes for clients
  • Scamper Chat Message Types - Defines the Scamper MessageTypes that are used by client and server to choose handlers for particular kinds of messages
  • Scamper Chat Client Base - Base classes that provide a simple interface for writing scamper-chat clients

Downloads And Builds

Building is as simple as cloning this repository and running mvn install (Maven 3.2.x or later and JDK 8 recommended).

Wire Format

The wire-format is BSON with gzip compression for larger messages; encryption is applied to message bodies by the client and decrypted by receiving clients.

To-Do

Plenty of things could be done with this:

  • Get the server working with multiple-associations (SCTP allows a connection to be to multiple redundant machines)
  • Do something more like bitchx for the command-line client - this is complicated by the lack of a reliable way to get terminal dimensions in Java, though jline looks like it could help
    • This could be done by assuming a fixed console size, it just wouldn't be pretty
  • Implement additional IRC-like commands (it would pay to split this stuff out into command-objects in the CLI)
  • Swap out the JCE Blowfish with BCrypt or some JCE-independent implementation of Twofish to be done with needing the Java crypto extensions - math is not a munition, and the fact that this doesn't come built into Java is a ridiculous artifact of the 90s
  • Adapter Netty's SSL engine to server/client communication
    • Use certs to validate that you're really talking to the server you think you are
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].