Sha256: 2b0f5e4166cc55fb6d552ae98a57567ddaf3878258d253f58c4dc333388d3f04

Contents?: true

Size: 1.27 KB

Versions: 11

Compression:

Stored size: 1.27 KB

Contents

module VPNMaker
  class Manager
    attr_reader :tracker

    def self.vpn_name(dir); dir =~ /(^|\/)([^\/\.]+)\.vpn/ ? $2 : nil; end

    def initialize(dir)
      name = self.class.vpn_name(File.expand_path(dir))
      @tracker = KeyTracker.new(name, File.expand_path(dir))
    end

    def config; @tracker.config; end

    def build_ca; @tracker.builder.build_ca; end
    def build_server
      @tracker.builder.build_server_key
      @tracker.builder.build_ta_key
      @tracker.builder.build_dh_key
    end

    def create_user(user, name, email, pass=nil)
      @tracker.builder.build_key(user, name, email, pass, :add_user)
    end

    def revoke_all(user)
      cur = @tracker.active_key_version(user)
      while cur >= 0
        unless @tracker.revoked?(user, cur)
          @tracker.builder.revoke_key(user, cur)
        end
        cur -= 1
      end
    end

    def regenerate_user(user, pass=nil)
      revoke_all(user)
      u = @tracker.user(user)
      @tracker.builder.build_key(user, u[:name], u[:email], pass, :add_user_key)
    end

    def delete_user(user)
      revoke_all(user)
    end

    def users
      @tracker.users.keys
    end

    def user(user)
      @tracker.user(user)
    end

    def config_generator(*args); ConfigGenerator.new([self] + args); end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
vpnmaker-1.0.11 lib/vpnmaker/manager.rb
vpnmaker-1.0.10 lib/vpnmaker/manager.rb
vpnmaker-1.0.9 lib/vpnmaker/manager.rb
vpnmaker-1.0.8 lib/vpnmaker/manager.rb
vpnmaker-1.0.7 lib/vpnmaker/manager.rb
vpnmaker-1.0.6 lib/vpnmaker/manager.rb
vpnmaker-1.0.4 lib/vpnmaker/manager.rb
vpnmaker-1.0.3 lib/vpnmaker/manager.rb
vpnmaker-1.0.2 lib/vpnmaker/manager.rb
vpnmaker-1.0.1 lib/vpnmaker/manager.rb
vpnmaker-1.0.0 lib/vpnmaker/manager.rb