GithubHelp home page GithubHelp logo

jabberling's Introduction

Making ejabberd run on LING VM

The log of changes follows:

  • rebar

A standard source of ejabberd from P1 (https://github.com/processone/ejabberd) does not work with rebar. There are a couple of "rebarized" versions. I took the one by treacheroustalks (https://github.com/treacheroustalks/ejabberd-app). There is also a required companion application, stringprep (https://github.com/treacheroustalks/stringprep-app). Both added as rebar dependencies.

  • c_src

c_src directories of both ejabberd and stringprep are moved to __REMOVED directory. rebar builds everything cleanly.

  • standard deps

The following application dependencies found: sasl, crypto, public_key, ssl, mnesia. All this applications are imported to the image and start successfully.

  • stringprep

Yet another dependency is stringprep. The purpose of the application is not clear. It is rewritten not to use driver and spew arguments of all calls.

  • ejabberd_loglevel

application:start(ejabberd) fails because ejabberd_loglevel.erl uses a dynamic compilation (for efficiency?). Upon initialization ejabberd_loglevel:set(4) is called. The ejabberd_logger.erl module that corresponds to this level is generated and added to the source tree. The module is also added to ejabberd.app.

  • db_init

ejabberd_app:db_init restarts mnesia. Calling application:stop(mnesia) leads to a complete shutdown. The shutdown was due to a bug in process_info(_, group_leader). mnesia restarts cleanly now.

  • sha

Module sha loads a driver. sha.erl heavily edited to use standard crypto:* routines and not load the driver.

  • xml

A possibility to use --enable-nif removed in xml.erl. File xml.c removed.

  • drivers

The start sequence starts tls_drv and expat_erl drivers. The line is commented out. Another line that loads ASN1.0 driver commented out too because it produces a deprecated message (and is noop).

  • mnesia

Mnesia creates a subdirectory in the project directory. The project directory is not writable. A writable directory is mounted over 9p and designated as a database directory to Mnesia.

  • missing

ejabberd uses system\monitor() functions. Functions are stubbed and do nothing. When opening a listening socket it sets the send timeout. The TCP driver updated to support the option fully. mod_caps wants to know the number of logical processors. system_info(logical_processors) always returns 1.

  • starts

ejabberd now starts. The admin user is added and admin console is accessible at port 5280.

  • expat

A c2s listener is configured on c2s. An attempt to connect fails because expat driver is not present/known. xml_stream.erl reimplemented using xmerl as xmerl_sax_parser offers functionality almost identical to the expat driver.

  • tls

tls driver hit upon connection attempt. tls and starttls removed from the listener to enable unencrypted connection. After a couple of more bugs it is now possible to login to the server.

  • DONE

jabberling's People

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.