summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelijah <elijah@riseup.net>2015-09-24 16:56:11 -0700
committerelijah <elijah@riseup.net>2015-09-24 16:56:11 -0700
commitc577e3ec23de2ff8b8f8272b687351f62cfcf5ca (patch)
treee1cc474571922a9e3a60319583d988bf68773661
parent26b54adadf7be2a60ecccde57519653fe769efa4 (diff)
added script destroy-user-db
-rwxr-xr-xdestroy-all-test-users (renamed from ruby/destroy-all-test-users)0
-rwxr-xr-xdestroy-all-user-dbs (renamed from ruby/destroy-all-user-dbs)0
-rwxr-xr-xdestroy-user-db47
-rw-r--r--lib/leap.rb2
-rw-r--r--lib/leap/server.rb11
-rw-r--r--lib/leap/users.rb36
6 files changed, 96 insertions, 0 deletions
diff --git a/ruby/destroy-all-test-users b/destroy-all-test-users
index b578f83..b578f83 100755
--- a/ruby/destroy-all-test-users
+++ b/destroy-all-test-users
diff --git a/ruby/destroy-all-user-dbs b/destroy-all-user-dbs
index 84cec56..84cec56 100755
--- a/ruby/destroy-all-user-dbs
+++ b/destroy-all-user-dbs
diff --git a/destroy-user-db b/destroy-user-db
new file mode 100755
index 0000000..fdf917b
--- /dev/null
+++ b/destroy-user-db
@@ -0,0 +1,47 @@
+#!/usr/bin/ruby
+
+require_relative "lib/leap"
+
+def main()
+ parse_opts
+ server = LEAP::Server.new
+ users_db = LEAP::Users.new(server)
+ record = users_db.find_by_login($username)
+ if record.nil?
+ puts "Username #{$username} does not exist."
+ exit 1
+ end
+ dbname = "user-#{record.id}"
+ begin
+ server.database(dbname).delete!
+ puts "Deleted DB #{dbname}"
+ exit 0
+ rescue RestClient::ResourceNotFound
+ puts "DB does not exist: #{dbname}"
+ exit 1
+ end
+end
+
+def parse_opts()
+ $username = nil
+ while cmd = ARGV.shift
+ case cmd
+ when "--username"
+ $username = ARGV.shift
+ else
+ usage
+ end
+ end
+ unless $username
+ usage
+ end
+end
+
+def usage()
+ puts "#{$0} COMMAND"
+ puts "Commands:"
+ puts " --username USERNAME - destroy the user db corresponding to USERNAME."
+ exit(1)
+end
+
+main() \ No newline at end of file
diff --git a/lib/leap.rb b/lib/leap.rb
new file mode 100644
index 0000000..39d2004
--- /dev/null
+++ b/lib/leap.rb
@@ -0,0 +1,2 @@
+require_relative('leap/server.rb')
+require_relative('leap/users.rb') \ No newline at end of file
diff --git a/lib/leap/server.rb b/lib/leap/server.rb
new file mode 100644
index 0000000..bc60455
--- /dev/null
+++ b/lib/leap/server.rb
@@ -0,0 +1,11 @@
+require 'couchrest'
+
+module LEAP
+ class Server < CouchRest::Server
+ def initialize
+ netrc = File.read('/root/.netrc').split(' ')
+ auth = "%{username}:%{password}@" % {username: netrc[3], password: netrc[5]}
+ super("http://#{auth}localhost:5984")
+ end
+ end
+end \ No newline at end of file
diff --git a/lib/leap/users.rb b/lib/leap/users.rb
new file mode 100644
index 0000000..14c9c4e
--- /dev/null
+++ b/lib/leap/users.rb
@@ -0,0 +1,36 @@
+require 'couchrest'
+
+module LEAP
+ class Users < CouchRest::Database
+
+ def initialize(server)
+ super(server, 'users')
+ end
+
+ def find_by_login(login)
+ record = self.view('User/by_login',
+ :reduce => false,
+ :startkey => login,
+ :endkey => login
+ )['rows'].first
+ if record
+ return self.get(record['id'])
+ end
+ end
+
+ def all_logins
+ self.view('User/by_login',
+ :reduce => false
+ )['rows'].map {|row|
+ row['key']
+ }
+ end
+
+ def all_active_ids
+ end
+
+ def all_ids
+ end
+
+ end
+end