Skip to content

Commit

Permalink
Merge pull request #227 from DeForce/develop
Browse files Browse the repository at this point in the history
Release 0.3.5
  • Loading branch information
DeForce authored Jan 15, 2017
2 parents 22d653b + 35ee3c7 commit 39d9d7f
Show file tree
Hide file tree
Showing 189 changed files with 3,223 additions and 1,615 deletions.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
*.pyc
.idea/*
.idea/
/logs
levels.db*
/build
Expand All @@ -9,3 +9,5 @@ levels.db*
*.spec
*.log
govno_rutony.py
/node_modules/
/http
31 changes: 31 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
language: generic
sudo: true

addons:
apt:
packages:
- xvfb

services:
- docker

branches:
only:
- develop

env:
- TEST_SUITE="runtime"
- TEST_SUITE="pylint"
- TEST_SUITE="jslint"
- TEST_SUITE="csslint"

matrix:
fast_finish: true
allow_failures:
env:
- TEST_SUITE="pylint"
- TEST_SUITE="jslint"
- TEST_SUITE="csslint"

script:
- ./travis/main.sh
26 changes: 26 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
FROM deforce/alpine-wxpython:latest

MAINTAINER CzT/DeForce <vlad@czt.lv>

ADD . /usr/lib/python2.7/site-packages/LalkaChat

RUN apk --update add --virtual build-deps build-base bzip2 git \
libstdc++ openssl-dev py2-pip python2-dev tar wget wxgtk-dev xz && \

pip install requests cherrypy ws4py irc semantic_version jinja2 && \
cd /usr/lib/python2.7/site-packages/LalkaChat && \
mkdir -p ./conf && \
mv ./docker/stubs/cefpython3 /usr/lib/python2.7/site-packages/ && \
mv ./docker/run /usr/local/bin/ && \
rm -rf ./docker && \
python ./setup.py build && \

mv /usr/lib/python2.7/site-packages/ /usr/lib/python2.7/~site-packages/ && \
apk del build-deps && \
mv /usr/lib/python2.7/~site-packages/ /usr/lib/python2.7/site-packages/ && \
rm -rf /var/cache/* /tmp/* /var/log/* ~/.cache && \
mkdir -p /var/cache/apk

VOLUME /usr/lib/python2.7/site-packages/LalkaChat

CMD /usr/local/bin/run
13 changes: 13 additions & 0 deletions Dockerfile_test
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
FROM deforce/lalkachat-build-deps:latest

MAINTAINER CzT/DeForce <vlad@czt.lv>

ADD . /usr/lib/python2.7/site-packages/LalkaChat

RUN cd /usr/lib/python2.7/site-packages/LalkaChat && \
mkdir -p ./conf && \
mv ./docker/stubs/cefpython3 /usr/lib/python2.7/site-packages/ && \
mv ./docker/run /usr/local/bin/ && \
rm -rf ./docker && \
python ./setup.py build
CMD /usr/local/bin/run
622 changes: 622 additions & 0 deletions LICENSE

Large diffs are not rendered by default.

87 changes: 85 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,86 @@
# LalkaChat
# LalkaChat [![Build Status](https://travis-ci.org/DeForce/LalkaChat.svg?branch=develop)](https://travis-ci.org/DeForce/LalkaChat)

Thanks to ftpud for fixing IE compatibility
LalkaChat is a program for displaying multiple chats from services is one place.
It's cross-platform and highly configurable. You can set the style of the chat, so it can look differently and you can tweak a lot of the settings.
Writen in modular way so you can easily add or remove any module that you need or do not need or write your own module if you lack available functionality.
Uses wxPython as a GUI interface and CEF as a browser window that renders current style.
HTTP Server backend is using CherryPy to provide ability for modules to use REST API calls to control chat behaviour.
Various modules that enrich the LalkaChat functionality.
Supports multiple languages being English and Russian at the moment, but core is already there
and you can translate to different languages if there is proper translations.
You can see how much viewers you have for each chat in the GUI (You can toggle this function on/off if you desire so).

## Supported Websites

* [Peka2tv](http://peka2.tv/)
* [GoodGame](https://goodgame.ru/)
* [Twitch.TV](https://www.twitch.tv/)

## Architecture

LalkaChat uses conveyor architecture delivering the messages.

You configure the "Input" chat modules, such as Twitch/Goodgame and will start sending messages to the central queue
which will push the message to message process modules that are loaded by priority.
Those modules each process the message and pass the message to the next module.
Last one module is WebChat module which is HTTP backend that is responsible for hosting the style/theme and sending it to browser.

## Available Modules for message processing

* Blacklist - Allows user to blacklist\hide specific words or chatters.
* Cloud2Butt - Word substitution module.
* Dwarf Fortress - Special module that picks chatters by special keyword and writes them into file.
* Levels - Adds level icons to chatter, allows them to level up in the chat and be awesome by chatting.
* Logger - Logs all the messages that come via LalkaChat pipe.
* Mentions - Allows user to specify different words to be highlighted.
(Example: Your username differs in different chat and you want to highlight it from everywhere)
* Webchat - Core module to allow user to view the chat from browser/GUI

## Information for Developers
TODO
### Messaging Module Basics
TODO // Code Examples
### Chat Module Basics
TODO // Code Examples
### GUI Module Basics
TODO // Code Examples

## Installation from Source

ToDo. Probably will be couple scripts that you can run from python.

## Installation from Package (Windows)

Unpack the zip to the folder you want, and run `LalkaChat.exe`.

## Docker Availability
Docker build is available for testing LalkaChat, uses XPRA to display GUI from browser

### Usage(GNU/Linux macOS Windows):
- [Install docker](https://docs.docker.com/engine/installation/)
- `docker run -d --name x11-bridge -e MODE="html" -p 10000:10000 -e XPRA_DISPLAY=:14 -e XPRA_PASSWORD=<PASSWORD> jare/x11-bridge`
- `docker run -d --name chat -p 8080:8080 -v <PATH_TO_CONFIG>:/usr/lib/python2.7/site-packages/LalkaChat/conf deforce/lalkachat`
- Open chat config at `http://localhost:10000/index.html?encoding=png&password=<PASSWORD>`
- And chat window at `http://localhost:8080/`
- You can update the chat with `docker rmi -f czt/lalkachat`
- Remove containers with `docker rmi -f x11-bridge chat`


#### Production docker build:

- `docker build -t deforce/alpine-wxpython:latest docker/Dockerfiles/alpine-wxpython`
- `docker build -t deforce/lalkachat:latest .`

#### Testing docker build:
- `docker build -t deforce/alpine-wxpython:latest docker/Dockerfiles/alpine-wxpython`
- `docker build -t deforce/lalkachat-build-deps:latest docker/Dockerfiles/lalkachat-build-deps`
- `docker run -d --name x11-bridge -e MODE="html" -p 10000:10000 -e XPRA_DISPLAY=:14 -e XPRA_PASSWORD=<PASSWORD> jare/x11-bridge`
- (on source change)
- `docker build -t deforce/lalkachat:testing -f Dockerfile_test .`
- `docker run -rm --name chat-test -p 8080:8080 -v <PATH_TO_CONFIG>:/usr/lib/python2.7/site-packages/LalkaChat/conf deforce/lalkachat:testing`

## Special Thanks:
ftpud - for fixing IE compatibility (Old problem with IE Browser)
JAre - for being awesome with his docker stuff
ichursin - for deep knowledge in JavaScript and helping me with code
l0stparadis3 - for helping and testing in Linux environment
28 changes: 28 additions & 0 deletions docker/Dockerfiles/alpine-wxpython/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
FROM alpine:edge

MAINTAINER CzT/DeForce <vlad@czt.lv>

# docker build --build-arg WXPY_SRC_URL=http://heanet.dl.sourceforge.net/project/wxpython/wxPython/3.0.1.0/wxPython-src-3.0.1.0.tar.bz2 -t deforce/alpine-wxpython:3.0.1.0 .
ARG WXPY_SRC_URL="http://heanet.dl.sourceforge.net/project/wxpython/wxPython/3.0.2.0/wxPython-src-3.0.2.0.tar.bz2"

RUN echo "http://nl.alpinelinux.org/alpine/edge/main" \
>> /etc/apk/repositories && \
echo "http://nl.alpinelinux.org/alpine/edge/testing" \
>> /etc/apk/repositories && \
echo "http://nl.alpinelinux.org/alpine/edge/community" \
>> /etc/apk/repositories && \

apk --update add font-misc-misc libgcc mesa-gl python2 wxgtk && \

apk --update add --virtual build-deps build-base \
bzip2 libstdc++ python2-dev tar wget wxgtk-dev xz && \

wget -qO- "${WXPY_SRC_URL}" | tar xj -C /tmp/ && \
cd /tmp/wxPython-src-* && \
cd ./wxPython && \
python ./setup.py build && \
python ./setup.py install && \

apk del build-deps && \
rm -rf /var/cache/* /tmp/* /var/log/* ~/.cache && \
mkdir -p /var/cache/apk
7 changes: 7 additions & 0 deletions docker/Dockerfiles/lalkachat-build-deps/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
FROM deforce/alpine-wxpython:latest

MAINTAINER CzT/DeForce <vlad@czt.lv>

RUN apk --update add build-base bzip2 git libstdc++ \
openssl-dev py2-pip python2-dev tar wget wxgtk-dev xz && \
pip install requests cherrypy ws4py irc semantic_version jinja2
30 changes: 30 additions & 0 deletions docker/run
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/bin/sh

webchatCF="/usr/lib/python2.7/site-packages/LalkaChat/conf/webchat.cfg"
globCF="/usr/lib/python2.7/site-packages/LalkaChat/conf/config.cfg"

if [ -f $webchatCF ];
then
sed -i 's/^host =.*$/host = 0.0.0.0/' $webchatCF
else
cat <<-EOF | tee > ${webchatCF}
[server]
host = 0.0.0.0
EOF
fi

if [ -f $globCF ];
then
sed -i 's/^show_browser =.*$/show_browser = False/' $globCF
else
cat <<-EOF | tee > ${globCF}
[gui]
show_browser = False
EOF
fi

cd /usr/lib/python2.7/site-packages/LalkaChat

python ./main.py
Empty file.
Empty file.
9 changes: 9 additions & 0 deletions docker/stubs/cefpython3/wx/chromectrl.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class ChromeCtrl: #temporary solution https://github.com/DeForce/LalkaChat/issues/154
def __init__(self, parent, url="", useTimer=True,
timerMillis=0,
browserSettings=None, hasNavBar=True,
*args, **kwargs):
self.stub = True

def Initialize(settings=None, debug=False):
pass
Loading

0 comments on commit 39d9d7f

Please sign in to comment.