Skip to content

Shirakumo/ex-lichat

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
lib
 
 
rel
 
 
 
 
 
 
 
 
 
 
 
 
 
 
# ExLichat
This is an implementation of a "Lichat"(https://shirakumo.github.io/lichat) server.

## Supported Extensions
In addition to the core protocol, ExLichat also supports many of the specified extensions:

- shirakumo-backfill
- shirakumo-block
- shirakumo-bridge
- shirakumo-channel-info
- shirakumo-channel-trees
- shirakumo-data
- shirakumo-edit
- shirakumo-emotes
- shirakumo-icon
- shirakumo-ip
- shirakumo-last-read
- shirakumo-link
- shirakumo-pause
- shirakumo-quiet
- shirakumo-reactions
- shirakumo-replies
- shirakumo-search
- shirakumo-server-management
- shirakumo-typing
- shirakumo-user-info

; TODO: implement markup, shared-identity extensions
; TODO: Keep server stats of when IPs connect and with which names, etc.
; TODO: Expose these stats through an extra interface.
; TODO: Track and limit connections per IP
; TODO: send disconnect when connection process terminates from application shutdown
; TODO: be stricter about image payloads in emotes and especially channel/user-info:
;   - Automatically resize icons to fit a predetermined max-size
;   - Reject payload if the payload is not an actual png/jpeg/gif file

## How To
Setting up a Lichat server is very simple.

::
pacman -S elixir
git clone https://github.com/shirakumo/ex-lichat
cd ex-lichat
touch config/secret.exs
mix deps.get
iex -S mix
::

You can configure and override settings from the "config"(config/config.exs) in the config/secret.exs file.

## Sample Systemd Service

::
[Unit]
Description=Lichat Chat Server

[Service]
Type=simple
User=lichat
ExecStart=$LICHAT_SOURCE/_build/dev/rel/lichat/bin/lichat start
ExecStop=$LICHAT_SOURCE/_build/dev/rel/lichat/bin/lichat stop
ExecReload=$LICHAT_SOURCE/_build/dev/rel/lichat/bin/lichat rpc "Lichat.reload()"
WorkingDirectory=$LICHAT_SOURCE
Restart=on-failure
RestartSec=30
TimeoutStopSec=5

[Install]
WantedBy=multi-user.target
::

Just replace ``$LICHAT_SOURCE`` with the path to your root source directory, assuming you built a binary from there with ``mix release``.

About

A Lichat server implementation in Elixir

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages