Code Monkey home page Code Monkey logo

vines-backdoor's Introduction

Build Status Code Climate

Vines::Backdoor

Allows you to authenticate and generate bosh session for Vines user by sigle request without password. All that you need โ€“ a secret key from backdoor of your Vines

Standart http-bind flow requires 4 requests with 4 responses from Vines (last is binding result). With vines-backdoor you need just 1 request and 1 response from Vines ๐Ÿ˜ค

Installation

Add this line to your application's Gemfile:

gem 'vines-backdoor'

And then execute:

$ bundle

Or install it yourself as:

$ gem install vines-backdoor

โš ๏ธ Attention โš ๏ธ

Never, ever, ever use this for external client authentication. This extension is only for internal server use

Usage

Modify your vines config file

# conf/config.rb

require 'vines/backdoor'

# http bind section
http '0.0.0.0', 5280 do
  bind '/http-bind'
  max_stanza_size 65536
  max_resources_per_account 5
  root 'web'
  vroute ''
  backdoor 'my-secret-backdoor-key'
end

Now http service accept extended requests with some extra data in it. All response messages (errors and success responses) are RFC compatible

Send authentication and binding request in a batch

<body xmlns="http://jabber.org/protocol/httpbind" xmlns:xmpp="urn:xmpp:xbosh" xmpp:version="1.0"
	  content="text/xml; charset=utf-8" rid="235205804" to="localhost" secure="true" wait="60" hold="1"
	  backdoor="my-secret-backdoor-key">
  <auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="INTERNAL">user@localhost</auth>
  <bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">
    <resource>pidgin</resource>
  </bind>
</body>

And get a successful response

<iq type="result" id="235205804">
  <bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">
    <jid>user@localhost/pidgin</jid>
    <sid>f27c71df-f124-4829-b415-5855b8c04109</sid>
  </bind>
</iq>

Contributing

  1. Fork it ( http://github.com/Strech/vines-backdoor/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

vines-backdoor's People

Watchers

James Cloos avatar Sergey Fedorov avatar  avatar

Forkers

abak-press

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.