The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Convos - Multiuser IRC proxy with web interface

VERSION

0.8001

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.

Configuration

You can also customize the config by setting MOJO_CONFIG before running any of the commands above. Example:

  $ MOJO_CONFIG=$HOME/.convos.conf convos daemon

You can use https://github.com/Nordaaker/convos/blob/release/convos.conf as config file template.

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_MANUAL_BACKEND=1

    Disable the frontend from automatically starting the backend.

  • 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 REDISTOGO_URL or DOTCLOUD_DATA_REDIS_URL if 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;
      }

RESOURCES

SEE ALSO

ATTRIBUTES

archive

Holds a Convos::Core::Archive object.

cache

Holds a Mojolicious::Static object pointing to a cache dir. The directory is "/tmp/convos" by default.

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