Giter VIP home page Giter VIP logo

simple_gate's Introduction

SimpleGate

SimpleGate makes it possible to use net/ssh/gateway’s capabilities in a simple to use way. This makes it possible to write simple scripts that access servers that are located several hops inside a network.

The core gateway chaining logic was taken from Capistrano, but it has been rewritten to be useful in a more generic way than Capistrano allows.

SimpleGate’s Router class makes it possible to automatically find a route through a maze of servers instead of having to manually define gateway chains. An added benefit is that a change to one server’s connections no longer requires you to update all other servers if they relied on it as a gateway.

SimpleGate is simple, meaning it does not (yet) do fancy things such as using ~/.ssh. Because of this, you’ll have to define ~/.servers.yml and add entries to configure your servers. To use the routing functionality used by the gate_cp and simple_gate executables, you have to define routes in ~/.servers.connections.yml

An example configuration for the servers ‘foobar’ and ‘barfoo’ would look be:

---
foobar:
  address: "127.0.0.1"
  username: "foo"
  password: "bar
  port: 22
barfoo:
  address: "192.168.0.1"
  username: "bar"
  password: "foo
  port: 22

Example of a ~/.servers.connections.yml file:

---
local:
- foo
foo:
- bar
- baz
bar:
- foobar
- foobaz
- barbaz

All keys are names of servers defined in ~/.servers.yml. The only special node is “local”, which is the starting point for all connections and not a real connection.

Recent changes

Version 0.5.4

  • Fixed gemspec: add missing spec files and added missing gem dependencies

  • Updated Rakefile with ruby 1.9 workaround and a missing file spotter

Version 0.5.3

  • Added yardoc documentation to all classes.

  • SimpleGate#through raises an error when no gates are chosen

  • SimpleGate#through uses local variables instead of instance variables

  • ServerDefinition#options is created on the fly

Version 0.5.2

  • Added -V verbose flag to gate_cp

  • Use STDERR for status messages. STDOUT is used to output SSH responses

  • Updated executables to support direct server connections

  • SimpleGate#through_to can connect directly to a server without gateways

Version 0.5.1

  • Updated readme and simple_gate documentation

  • Implemented infinite loop prevention code in Router#find

  • Cleaned up Router#find to be more readable

  • Added spec to show stack overflow occurs when a cyclical graph is used to find a route

  • Added specs for Router#find

  • Added a -V (verbose) flag option to simple_gate

  • Removed empty method definition

Version 0.5.0

  • Added syntax explanation to gate_cp

  • Added gate_cp, which copies one local file to a remote destination

Version 0.4.1

  • simple_gate is now executable

Version 0.4.0

  • Updated readme with version history for previous gem versions

  • Added simple_gate executable to use SimpleGate’s new Router class to find a path to a server and execute a command there.

Version 0.3.0

  • Readme now has a project description and updated credits for a bit of Capistrano code

  • Added mutator and documentation for ServerDefinition.servers

  • Updated comment to make more sense

Version 0.2.0

  • Implemented SimpleGate#through_to, which establishes a real ssh session through a number of gateways

Version 0.1.0

  • Removed simple_gate executable

  • Imported SimpleGate and ServerDefinition

Version 0.0.1

  • Created project

Installation

From git

From the project root, use rake to install.

git clone http://github.com/Narnach/simple_gate
cd simple_gate
rake install

This will build the gem and install it for you.

About

simple_gate was created by Wes Oldenbeuving. It is licensed under the MIT license.

SimpleGate#through is based on GatewayConnectionFactory#initialize, which is part of Jamis Buck’s Capistrano and is also licensed under the MIT license.

simple_gate's People

Contributors

narnach avatar

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.