NAME

Convos - Multiuser IRC proxy with web interface

VERSION

0.5

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_PING_INTERVAL=30

    Set how often to send "keep-alive" through the web socket. Default is every 30 second.

  • 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
  • MOJO_IRC_DEBUG=1

    Set MOJO_IRC_DEBUG for extra IRC debug output to STDERR.

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