NAME

Convos - Multiuser IRC proxy with web interface

VERSION

0.83

DESCRIPTION

Convos is to a multi-user IRC Proxy, that also provides a easy to use Web interface. Feature list:

  • Always online

    The backend server will keep you logged in and logs all the activity in your archive.

  • Archive

    All chats will be logged and indexed, which allow you to search in earlier conversations.

  • Avatars

    The chat contains profile pictures which can be retrieved from Facebook or from gravatar.com.

  • Include external resources

    Links to images and video will be displayed inline. No need to click on the link to view the data.

Architecture principles

  • Keep the JS simple and manageable

  • Use Redis to manage state / publish subscribe

  • Archive logs in plain text format, use ack to search them.

  • Bootstrap-based user interface

RUNNING CONVOS

Convos has sane defaults so after installing Convos you should be able to just run it:

# Install
$ cpanm Convos
# Run it
$ convos backend &
$ convos daemon

The above works, but if you have a lot of users you probably want to use hypnotoad instead of daemon:

$ hypnotoad $(which convos)

The command above will start a full featured, UNIX optimized, preforking non-blocking webserver. Run the same command again, and the webserver will hot reload the source code without loosing any connections.

Environment

Convos can be configured with the following environment variables:

  • CONVOS_BACKEND_EMBEDDED=1

    Set CONVOS_MANUAL_BACKEND to a true value if you want to force the frontend to start the backend embedded. This is useful if you want to test Convos with morbo.

  • CONVOS_DEBUG=1

    Set CONVOS_DEBUG for extra debug output to STDERR.

  • CONVOS_DISABLE_AUTO_EMBED=1

    Set CONVOS_DISABLE_AUTO_EMBED to disable links from expanding into images, movies or other dynamic content.

  • CONVOS_MANUAL_BACKEND=1

    Disable the frontend from automatically starting the backend.

  • CONVOS_ORGANIZATION_NAME

    Set this to customize the organization name on the landing page, in the title tag and other various sites. The default is Nordaaker.

  • CONVOS_REDIS_URL

    This is the URL to the Redis backend, and should follow this format:

    redis://x:password@server:port/database_index
    redis://127.0.0.1:6379/1 # suggested value

    Convos will use REDISCLOUD_URL, REDISTOGO_URL, DOTCLOUD_DATA_REDIS_URL or default to "redis://127.0.0.1:6379/1" unless CONVOS_REDIS_URL is not set.

    It is also possible to set CONVOS_REDIS_INDEX=2 to use the database index 2, instead of the default. This is useful when REDISTOGO_URL or DOTCLOUD_DATA_REDIS_URL does not contain the datbase index.

  • CONVOS_INVITE_CODE

    If set must be appended to register url. Example:

    http://your.convos.by/register/some-secret-invite-code
  • CONVOS_SECURE_COOKIES=1

    Set CONVOS_SECURE_COOKIES to true in order to set the secure flag on all session cookies. Requires HTTPS.

  • MOJO_IRC_DEBUG=1

    Set MOJO_IRC_DEBUG for extra IRC debug output to STDERR.

  • MOJO_LISTEN

    List of one or more locations to listen on. This also works for hypnotoad. Example:

    MOJO_LISTEN="http://*:8080,https://*:8443"

    "listen" in Mojo::Server::Daemon.

  • MOJO_REVERSE_PROXY

    Set this to a true value if you're using hypnotoad behind a reverse proxy, such as nginx.

HTTP headers

  • X-Request-Base

    Set this header if you are mounting Convos under a custom path. Example with nginx:

    # mount the application under /convos
    location /convos {
      # remove "/convos" from the forwarded request
      rewrite ^/convos(.*)$ $1 break;
    
      # generic headers for correct handling of ws and http
      proxy_http_version 1.1;
      proxy_set_header Connection "upgrade";
      proxy_set_header Host $host;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Host $host;
    
      # set this if you are running SSL
      proxy_set_header X-Forwarded-HTTPS 1;
    
      # inform Convos the full location where it is mounted
      proxy_set_header X-Request-Base "https://some-domain.com/convos";
    
      # tell nginx where Convos is running
      proxy_pass http://10.0.0.10:8080;
    }

CUSTOM TEMPLATES

Some parts of the Convos templates can include custom content. Example:

# Create a directory where you can store the templates
$ mkdir -p custom-convos/vendor

# Edit the template you want to customize
$ $EDITOR custom-convos/vendor/login_footer.html.ep

# Start convos with CONVOS_TEMPLATES set. Without /vendor at the end
$ CONVOS_TEMPLATES=$PWD/custom-convos convos daemon --listen http://*:5000

Any changes to the templates require the server to restart.

The templates that can be customized are:

  • vendor/login_footer.html.ep

    This template will be included below the form on the /login page.

  • vendor/register_footer.html.ep

    This template will be included below the form on the /register page.

RESOURCES

SEE ALSO

ATTRIBUTES

archive

Holds a Convos::Core::Archive object.

core

Holds a Convos::Core object.

upgrader

Holds a Convos::Upgrader object.

METHODS

startup

This method will run once at server start

COPYRIGHT AND LICENSE

Copyright (C) 2012-2013, Nordaaker.

This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.

AUTHOR

Jan Henning Thorsen - jhthorsen@cpan.org

Marcus Ramberg - marcus@nordaaker.com