Code By
Lucas Mouilleron

70 projects - An Open Source selection

TSColumbus

Python 95.1% - Shell 3.2% - CSS 0.9% - Dockerfile 0.7%
Last update : 02/10/2019 - 16:58
Project is private, can't show more.

TSVespucci

Python 95.3% - Shell 2.9% - CSS 1.1% - Dockerfile 0.6%
Last update : 02/10/2019 - 16:57
Project is private, can't show more.

devResources

Python 100%
Last update : 24/09/2019 - 16:19
Non exhaustive shitily agregated dev resources. Sorry.
Project is private, can't show more.

XChartBoilerplate

Java 100%
Last update : 23/09/2019 - 13:58
Project is private, can't show more.

TSMarcoPolo

Java 100%
Last update : 08/08/2019 - 15:36
Project is private, can't show more.

mediaServer

Last update : 27/07/2019 - 23:31
Project is private, can't show more.

TSDashboard

HTML 71% - CSS 9.7% - JavaScript 9.3% - Python 6.8% - Shell 2.4% - PHP 0.8%
Last update : 06/05/2019 - 11:51
Content agnostic dashboard app.
Project is private, can't show more.

+ Survival

Shell 63.9% - Lua 35% - Vim script 1.1%
Last update : 03/05/2019 - 16:41

Screenshot

Nice minimal setup for hostile environments :)

Install - Debian / Ubuntu

  • From root or sudo user:usermod -aG sudo username
  • From user username: sudo ls
  • From user username: export SSH_PASSPHRASE="12345" if SSH passphrase desired (more than 5 characters)
  • From user username: cd $HOME;sh <(wget -o /dev/null -qO- https://raw.githubusercontent.com/lucasmouilleron/Survival/master/debian.sh)

Install - macOS

  • From root or sudo user:usermod -aG sudo username
  • From user username: sudo ls
  • From user username: export SSH_PASSPHRASE="12345" if SSH passphrase desired (more than 5 characters)
  • From user username: cd $HOME;sh <(wget -o /dev/null -qO- https://raw.githubusercontent.com/lucasmouilleron/Survival/master/macOS.sh)

Install - Others

TODO :)

+ watchTower

Python 58.9% - JavaScript 15% - Java 12.8% - HTML 5.4% - CSS 4.1% - Dockerfile 3% - Shell 0.8%
Last update : 02/05/2019 - 08:08

Screenshot

A simple watchtower service.
Heartbeat monitoring + event agregator.

Hearbeat definitions

  • The server is in charge of monitoring services
  • When a service is considered dead, the server then alerts its owner
  • A service is a pulsing agent
  • A pulse is a sign of aliveness
  • When a service pulse the server, it tells him when he will pulse again in the worst case
  • If the service has not pulsed again in time, the server considers the service dead and alerts its owner
  • When a service is no longer required, it must inform the server to avoid a false dead alerts
  • An alert can be a mail, a pushover message, etc.

Event definitions

  • The server is in charge or recieving events
  • When a service sends an event, the server stores it
  • On demand, events can be retrieved for consultation
  • An event is: service + message + level + date of registration

Implementation

  • HTTP client / server architecture
  • All queries protected by password set in HTTP headers under "password"
  • Heartbeat protocol:
    • Pulse:
      • POST /
      • {"service":"SERVICE_NAME","alertType":"ALERT_TYPE","alertTarget":"TARGET_NAME","nextIn":EXPECTED_NEXT_HEARTBEAT_IN_SECS}
    • Cancel:
      • DELETE /
      • {"service":"SERVICE_NAME"}
    • List:
      • GET /
  • Event protocol:
    • Add:
      • POST /add-event
      • {"service":"SERVICE_NAME", "level":"level", "message":"the message"}
    • List:
      • GET /list-events
      • optional params: service (is), from (above), to (below), level (above), message (contains)

Server

  • ./server
  • python3
  • Dependencies: pip install -r requirements.txt
  • Config:
    • config/config.json: main config (cp config/sample.json config/config.json)
    • config/server.crt, config/server.key: SSL certificate, used only if SSL activated
  • Datas: data
  • Deploy:
    • Install dependencies
    • Setup config
    • Generate ssl certificates (optional)
    • Hook in with upstart (optional, ./server/config/sample.upstart.conf, http://upstart.ubuntu.com/getting-started.html)
  • Run: python server.py
  • Docker:
    • ./docker
    • Config: place server config files in ./docker/config
    • Interactive: cd docker && tools/dockerBuild && tools/dockerRun
    • Detached: cd docker && tools/dockerBuild && tools/dockerRunDetached

Server GUI

  • https://hostname.com:443/gui

Java Client

  • ./clientJava
  • Java 7+
  • No dependencies
  • Run test:

Python Client

  • ./clientPython
  • python3
  • Dependencies: requests (pip install requests)
  • Run test: python test.py

Javascript client

  • ./clientJavascript
  • client.js is a node module
  • Dependencies: packages.json -> devDependencies (npm install)
  • Run test: node test.js
  • Run test in browser: browserify test.js -o bundle.js and open test.html in browser

Certificates

  • Self signed: openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt
  • Letsencrypt: TODO

TODO

  • Put data writing in a queue
  • Put alert sending in a queue
  • (Way) better events persister

tmp

Last update : 01/05/2019 - 09:46
Project is private, can't show more.