lockr 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/weblockr +68 -0
- data/lib/lockr/action/add.rb +1 -2
- data/lib/lockr/http/httplockrinit.rb +5 -2
- data/lib/lockr/pwdmgr.rb +5 -5
- data/lib/lockr/version.rb +2 -2
- data/resources/static/css/lockr.css +6 -1
- data/resources/static/js/lockr.js +104 -32
- data/resources/views/addnewsite.erb +3 -1
- data/resources/views/changepwd.erb +3 -2
- data/resources/views/deletepwd.erb +1 -2
- data/resources/views/entryrow.erb +8 -5
- data/resources/views/index.erb +19 -0
- data/resources/views/layout.erb +1 -0
- metadata +22 -8
- data/bin/httplockr.rb +0 -65
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7587dffcce20576a1946dbda5557fe589cb11dd9
|
4
|
+
data.tar.gz: 3ee86753bf4dfd6045301b541909ab418571d80f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac68c79724e8eb520310eee218b23a042153b22a0c6781fef34983bf6ff58fac367dee90b45b7f40d573e2b52e680ec3c49f0643980ae2769f449a7efd294dd2
|
7
|
+
data.tar.gz: c55f59479c943aef242149ace41bd1aae174f1c6cfa738d452441a2a02fd481d9db5f75eea15823a7913001deba670190b87d10be11adc8d3c2bc56ab2dfc270
|
data/bin/weblockr
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'lockr/http/httplockrinit'
|
4
|
+
require 'erb'
|
5
|
+
require 'clipboard'
|
6
|
+
require 'padrino-helpers'
|
7
|
+
require 'json'
|
8
|
+
|
9
|
+
include ERB::Util
|
10
|
+
|
11
|
+
init = HttpLockrInit.new()
|
12
|
+
init.start()
|
13
|
+
|
14
|
+
# now start sinatra
|
15
|
+
require 'sinatra'
|
16
|
+
require "sinatra/json"
|
17
|
+
|
18
|
+
if init.getLoadBrowser
|
19
|
+
require "browser_gui"
|
20
|
+
end
|
21
|
+
|
22
|
+
register Padrino::Helpers
|
23
|
+
|
24
|
+
set :pwdmgr, init.getPwdMgr()
|
25
|
+
# server config
|
26
|
+
set :public_dir, File.expand_path('../../resources/static', __FILE__)
|
27
|
+
set :bind, '127.0.0.1'
|
28
|
+
set :port, 32187
|
29
|
+
set :views, File.expand_path('../../resources/views', __FILE__)
|
30
|
+
enable :run
|
31
|
+
|
32
|
+
get '/' do
|
33
|
+
dir = settings.pwdmgr.list()
|
34
|
+
erb :index, :locals => { :directory => dir }
|
35
|
+
end
|
36
|
+
|
37
|
+
get '/password' do
|
38
|
+
settings.pwdmgr.copy_to_clipboard( params[:id], params[:username])
|
39
|
+
json({:message => "Password copied to clipboard. Clipboard reset in 15 seconds."})
|
40
|
+
end
|
41
|
+
|
42
|
+
post '/password' do
|
43
|
+
json = convertFormToMap( request.body.read)
|
44
|
+
newPwdstore = settings.pwdmgr.add( json['id'], json['username'], json['password'], json['url'])
|
45
|
+
dir = settings.pwdmgr.list()
|
46
|
+
json({:message => "Site "#{json['id']}/#{json['username']}" added",
|
47
|
+
:row => [
|
48
|
+
json['id'],
|
49
|
+
json['username'],
|
50
|
+
json['url']
|
51
|
+
]})
|
52
|
+
end
|
53
|
+
|
54
|
+
patch '/password' do
|
55
|
+
json = convertFormToMap( request.body.read)
|
56
|
+
settings.pwdmgr.change( json['id'], json['username'], json['password'], json['url'])
|
57
|
+
json({:message => "Password for site "#{json['id']}/#{json['username']}" updated"})
|
58
|
+
end
|
59
|
+
|
60
|
+
delete '/password' do
|
61
|
+
json = convertFormToMap( request.body.read)
|
62
|
+
settings.pwdmgr.delete( json['id'], json['username'])
|
63
|
+
json({:message => "Password for site "#{json['id']}/#{json['username']}" deleted"})
|
64
|
+
end
|
65
|
+
|
66
|
+
def convertFormToMap( jsonForm)
|
67
|
+
Hash[JSON.parse(jsonForm).map{|el| [el['name'], el['value']]}]
|
68
|
+
end
|
data/lib/lockr/action/add.rb
CHANGED
@@ -19,8 +19,7 @@ class AddAction < BaseAction
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
-
|
23
|
-
@pwdmgr.add( id, username, pwd)
|
22
|
+
@pwdmgr.add( id, username, pwd, url)
|
24
23
|
say("Password saved for ID '<%= color('#{id}', :blue) %>' and user '<%= color('#{username}', :green) %>'")
|
25
24
|
end
|
26
25
|
|
@@ -13,8 +13,11 @@ class HttpLockrInit
|
|
13
13
|
end
|
14
14
|
|
15
15
|
configfile = Configuration.new()
|
16
|
-
cfg =
|
17
|
-
|
16
|
+
cfg = nil
|
17
|
+
if configfile.config
|
18
|
+
cfg = configfile.config[:lockr]
|
19
|
+
end
|
20
|
+
options[:vault] = File.expand_path(cfg[:vault]) if options[:vault] == 'vault.yaml' and cfg != nil
|
18
21
|
|
19
22
|
@pwdmgr = PasswordManager.new( options[:keyfile], options[:vault])
|
20
23
|
@load_browser = options[:browser]
|
data/lib/lockr/pwdmgr.rb
CHANGED
@@ -42,7 +42,7 @@ class PasswordManager
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
-
def add( id, username, password)
|
45
|
+
def add( id, username, password, url)
|
46
46
|
vault = decrypt_vault()
|
47
47
|
site_dir = {}
|
48
48
|
|
@@ -51,8 +51,7 @@ class PasswordManager
|
|
51
51
|
site_dir = vault[id]
|
52
52
|
end
|
53
53
|
|
54
|
-
|
55
|
-
new_store = PasswordStore.new( id, nil, username, password)
|
54
|
+
new_store = PasswordStore.new( id, url, username, password)
|
56
55
|
site_dir[username] = new_store
|
57
56
|
vault[id] = site_dir
|
58
57
|
|
@@ -61,10 +60,11 @@ class PasswordManager
|
|
61
60
|
return new_store
|
62
61
|
end
|
63
62
|
|
64
|
-
def change( id, username, password)
|
63
|
+
def change( id, username, password, url)
|
65
64
|
vault = decrypt_vault()
|
66
65
|
site_dir = vault[id]
|
67
|
-
site_dir[username].password = password
|
66
|
+
site_dir[username].password = password if ! password.nil?
|
67
|
+
site_dir[username].url = url if ! url.nil?
|
68
68
|
|
69
69
|
encrypt_vault( vault)
|
70
70
|
puts 'Changed password'
|
data/lib/lockr/version.rb
CHANGED
@@ -4,7 +4,7 @@ body {
|
|
4
4
|
}
|
5
5
|
|
6
6
|
div.center {
|
7
|
-
width:
|
7
|
+
width: 1000px;
|
8
8
|
margin: auto;
|
9
9
|
}
|
10
10
|
|
@@ -18,6 +18,11 @@ tr.even {
|
|
18
18
|
|
19
19
|
table.entrytable{
|
20
20
|
width: 100%;
|
21
|
+
table-layout:fixed;
|
22
|
+
}
|
23
|
+
|
24
|
+
table.entrytable td {
|
25
|
+
word-wrap: break-word;
|
21
26
|
}
|
22
27
|
|
23
28
|
table.entrytable .css_right {
|
@@ -3,9 +3,10 @@ $(document).ready(function() {
|
|
3
3
|
"bJQueryUI": true,
|
4
4
|
"bPaginate": false,
|
5
5
|
"aoColumns": [
|
6
|
-
{ "sWidth": "
|
7
|
-
{ "sWidth": "
|
8
|
-
{ "sWidth": "
|
6
|
+
{ "sWidth": "20%" },
|
7
|
+
{ "sWidth": "20%" },
|
8
|
+
{ "sWidth": "30%" },
|
9
|
+
{ "sWidth": "30%" }
|
9
10
|
]
|
10
11
|
});
|
11
12
|
|
@@ -15,61 +16,114 @@ $(document).ready(function() {
|
|
15
16
|
$( "#dialog-addnewsite" ).dialog( "open" );
|
16
17
|
});
|
17
18
|
|
19
|
+
$( '#resultbox').hide();
|
20
|
+
$( '#errorbox').hide();
|
21
|
+
|
22
|
+
$( "a#copypwd").click( function() {
|
23
|
+
var data = $( this).parents("tr.data")[0].dataset;
|
24
|
+
jQuery.ajax({
|
25
|
+
url: '/password',
|
26
|
+
data: {"id": data.id, "username": data.username},
|
27
|
+
contentType: 'application/json',
|
28
|
+
dataType: 'json'
|
29
|
+
}).done(function (response) {
|
30
|
+
$( '#errorbox').hide();
|
31
|
+
$( '#resultbox').show();
|
32
|
+
$( '#resultmsg').html( response.message);
|
33
|
+
}).fail(function () {
|
34
|
+
$( '#resultbox').hide();
|
35
|
+
$( '#errorbox').show();
|
36
|
+
$( '#errormsg').html( "Something went wrong.");
|
37
|
+
});
|
38
|
+
});
|
39
|
+
|
18
40
|
$( "#dialog-addnewsite" ).dialog({
|
19
41
|
autoOpen: false,
|
20
|
-
height:
|
42
|
+
height: 450,
|
21
43
|
width: 400,
|
44
|
+
position: { my: "left top", at: "left bottom", of: "a#addnew" },
|
22
45
|
modal: true,
|
23
46
|
buttons: {
|
24
47
|
"Save": function() {
|
25
|
-
|
48
|
+
jQuery.ajax({
|
49
|
+
url: '/password',
|
50
|
+
method: 'POST',
|
51
|
+
data: JSON.stringify($('#form-add').serializeArray()),
|
52
|
+
contentType: 'application/json',
|
53
|
+
dataType: 'json'
|
54
|
+
}).done(function (response) {
|
55
|
+
$( "#form-add").find("input[type=text], input[type=password]").val("");
|
56
|
+
$( "#dialog-addnewsite" ).dialog( "close" );
|
57
|
+
$( '#errorbox').hide();
|
58
|
+
$( '#resultbox').show();
|
59
|
+
$( '#resultmsg').html( response.message);
|
60
|
+
$( '.entrytable').dataTable().fnAddData( [
|
61
|
+
response.row[0],
|
62
|
+
response.row[1],
|
63
|
+
response.row[2],
|
64
|
+
'<a id="copypwd" class="button">Copy</a> <a id="changepwd" class="button">Change</a> <a id="deletepwd" class="button">Delete</a>'] );
|
65
|
+
$( "a.button" ).button();
|
66
|
+
}).fail(function () {
|
67
|
+
$( "#dialog-addnewsite" ).dialog( "close" );
|
68
|
+
$( '#resultbox').hide();
|
69
|
+
$( '#errorbox').show();
|
70
|
+
$( '#errormsg').html( "Something went wrong.");
|
71
|
+
});
|
26
72
|
},
|
27
73
|
"Cancel": function() {
|
28
74
|
$( this ).dialog( "close" );
|
29
75
|
}
|
30
|
-
},
|
31
|
-
close: function() {
|
32
|
-
// clean all fields
|
33
|
-
$("dialog-addnewsite input").each().val( "" ).removeClass( "ui-state-error" );
|
34
76
|
}
|
35
77
|
});
|
36
78
|
|
37
79
|
$( "a#changepwd").click( function() {
|
38
|
-
var
|
39
|
-
|
40
|
-
$("#dialog-changepwd #
|
41
|
-
$("#dialog-changepwd #
|
42
|
-
$("#dialog-changepwd #
|
43
|
-
$("#dialog-changepwd #
|
80
|
+
var data = $( this).parents("tr.data")[0].dataset;
|
81
|
+
$("#dialog-changepwd #id").attr('value', data.id);
|
82
|
+
$("#dialog-changepwd #id_label").html( data.id);
|
83
|
+
$("#dialog-changepwd #username").attr('value', data.username);
|
84
|
+
$("#dialog-changepwd #username_label").html( data.username);
|
85
|
+
$("#dialog-changepwd #url").attr('value', data.url);
|
44
86
|
$("#dialog-changepwd" ).dialog( "open" );
|
45
87
|
});
|
46
88
|
|
47
89
|
$( "#dialog-changepwd" ).dialog({
|
48
90
|
autoOpen: false,
|
49
|
-
height:
|
91
|
+
height: 450,
|
50
92
|
width: 400,
|
51
93
|
modal: true,
|
52
94
|
buttons: {
|
53
95
|
"Change": function() {
|
54
|
-
|
96
|
+
jQuery.ajax({
|
97
|
+
url: '/password',
|
98
|
+
method: 'PATCH',
|
99
|
+
data: JSON.stringify($('#form-change').serializeArray()),
|
100
|
+
contentType: 'application/json',
|
101
|
+
dataType: 'json'
|
102
|
+
}).done(function (response) {
|
103
|
+
$( "#form-change").find("input[type=text], input[type=password]").val("");
|
104
|
+
$( "#dialog-changepwd" ).dialog( "close" );
|
105
|
+
$( '#errorbox').hide();
|
106
|
+
$( '#resultbox').show();
|
107
|
+
$( '#resultmsg').html( response.message);
|
108
|
+
}).fail(function () {
|
109
|
+
$( "#dialog-changepwd" ).dialog( "close" );
|
110
|
+
$( '#resultbox').hide();
|
111
|
+
$( '#errorbox').show();
|
112
|
+
$( '#errormsg').html( "Something went wrong.");
|
113
|
+
});
|
55
114
|
},
|
56
115
|
"Cancel": function() {
|
57
116
|
$( this ).dialog( "close" );
|
58
117
|
}
|
59
|
-
},
|
60
|
-
close: function() {
|
61
|
-
// clean all fields
|
62
|
-
$("dialog-changepwd input").each().val( "" ).removeClass( "ui-state-error" );
|
63
118
|
}
|
64
119
|
});
|
65
120
|
|
66
121
|
$( "a#deletepwd").click( function() {
|
67
|
-
var
|
68
|
-
|
69
|
-
$("#dialog-deletepwd #
|
70
|
-
$("#dialog-deletepwd #
|
71
|
-
$("#dialog-deletepwd #
|
72
|
-
$("#dialog-deletepwd #username_label").html( username);
|
122
|
+
var data = $( this).parents("tr.data")[0].dataset;
|
123
|
+
$("#dialog-deletepwd #id").attr('value', data.id);
|
124
|
+
$("#dialog-deletepwd #id_label").html( data.id);
|
125
|
+
$("#dialog-deletepwd #username").attr('value', data.username);
|
126
|
+
$("#dialog-deletepwd #username_label").html( data.username);
|
73
127
|
$("#dialog-deletepwd" ).dialog( "open" );
|
74
128
|
});
|
75
129
|
|
@@ -80,15 +134,33 @@ $(document).ready(function() {
|
|
80
134
|
modal: true,
|
81
135
|
buttons: {
|
82
136
|
"Delete": function() {
|
83
|
-
|
137
|
+
jQuery.ajax({
|
138
|
+
url: '/password',
|
139
|
+
method: 'DELETE',
|
140
|
+
data: JSON.stringify($('#form-delete').serializeArray()),
|
141
|
+
contentType: 'application/json',
|
142
|
+
dataType: 'json'
|
143
|
+
}).done(function (response) {
|
144
|
+
var id = $('#form-delete #id').attr('value');
|
145
|
+
console.log(id);
|
146
|
+
var tr = $(".entrytable tr[data-id='" + id + "']")[0];
|
147
|
+
console.log(tr);
|
148
|
+
$( "#form-delete").find("input[type=text], input[type=password]").val("");
|
149
|
+
$( "#dialog-deletepwd" ).dialog( "close" );
|
150
|
+
$( '#errorbox').hide();
|
151
|
+
$( '#resultbox').show();
|
152
|
+
$( '#resultmsg').html( response.message);
|
153
|
+
$( '.entrytable').dataTable().fnDeleteRow( tr);
|
154
|
+
}).fail(function () {
|
155
|
+
$( "#dialog-delete" ).dialog( "close" );
|
156
|
+
$( '#resultbox').hide();
|
157
|
+
$( '#errorbox').show();
|
158
|
+
$( '#errormsg').html( "Something went wrong.");
|
159
|
+
});
|
84
160
|
},
|
85
161
|
"Cancel": function() {
|
86
162
|
$( this ).dialog( "close" );
|
87
163
|
}
|
88
|
-
},
|
89
|
-
close: function() {
|
90
|
-
// clean all fields
|
91
|
-
$("dialog-deletepwd input").each().val( "" ).removeClass( "ui-state-error" );
|
92
164
|
}
|
93
165
|
});
|
94
166
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<div id="dialog-addnewsite" title="Add new site" class="dialog">
|
2
|
-
<form id="form-add"
|
2
|
+
<form id="form-add">
|
3
3
|
<fieldset>
|
4
4
|
<label for="name">Site-ID</label>
|
5
5
|
<input type="text" name="id" id="id" class="text ui-widget-content ui-corner-all" />
|
@@ -7,6 +7,8 @@
|
|
7
7
|
<input type="text" name="username" id="username" class="text ui-widget-content ui-corner-all" />
|
8
8
|
<label for="password">Password</label>
|
9
9
|
<input type="password" name="password" id="password" class="text ui-widget-content ui-corner-all" />
|
10
|
+
<label for="url">Url</label>
|
11
|
+
<input type="text" name="url" id="url" class="text ui-widget-content ui-corner-all" />
|
10
12
|
</fieldset>
|
11
13
|
</form>
|
12
14
|
</div>
|
@@ -1,6 +1,5 @@
|
|
1
1
|
<div id="dialog-changepwd" title="Change password" class="dialog">
|
2
|
-
<form id="form-change"
|
3
|
-
<input type="hidden" name="_method" value="PATCH"/>
|
2
|
+
<form id="form-change">
|
4
3
|
<input type="hidden" name="id" id="id"/>
|
5
4
|
<input type="hidden" name="username" id="username"/>
|
6
5
|
<fieldset>
|
@@ -10,6 +9,8 @@
|
|
10
9
|
<label class="labelfield ui-widget-content ui-corner-all"><span id="username_label"></span></label>
|
11
10
|
<label for="password">Password</label>
|
12
11
|
<input type="password" name="password" id="password" class="text ui-widget-content ui-corner-all" />
|
12
|
+
<label for="url">Url</label>
|
13
|
+
<input type="text" name="url" id="url" class="text ui-widget-content ui-corner-all" />
|
13
14
|
</fieldset>
|
14
15
|
</form>
|
15
16
|
</div>
|
@@ -1,6 +1,5 @@
|
|
1
1
|
<div id="dialog-deletepwd" title="Delete password" class="dialog">
|
2
|
-
<form id="form-delete"
|
3
|
-
<input type="hidden" name="_method" value="DELETE"/>
|
2
|
+
<form id="form-delete">
|
4
3
|
<input type="hidden" name="id" id="id"/>
|
5
4
|
<input type="hidden" name="username" id="username"/>
|
6
5
|
<fieldset>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<tr>
|
1
|
+
<tr class="data" data-id="<%= store.id %>" data-username="<%= store.username %>" data-url="<%= store.url %>">
|
2
2
|
<td>
|
3
3
|
<%= store.id %>
|
4
4
|
</td>
|
@@ -6,10 +6,13 @@
|
|
6
6
|
<%= store.username %>
|
7
7
|
</td>
|
8
8
|
<td>
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
<a href="<%= store.url %>" target="_blank">
|
10
|
+
<%= store.url %>
|
11
|
+
</a>
|
12
|
+
</td>
|
13
|
+
<td>
|
14
|
+
<a id="copypwd" class="button">Copy</a>
|
12
15
|
<a id="changepwd" class="button">Change</a>
|
13
|
-
<a id="deletepwd" class="button">Delete</a>
|
16
|
+
<a id="deletepwd" class="button">Delete</a>
|
14
17
|
</td>
|
15
18
|
</tr>
|
data/resources/views/index.erb
CHANGED
@@ -3,6 +3,22 @@
|
|
3
3
|
<div class="spacebelow">
|
4
4
|
<a id="addnew" class="button">Add new site</a>
|
5
5
|
</div>
|
6
|
+
<div class="ui-widget" id="resultbox">
|
7
|
+
<div class="ui-state-highlight ui-corner-all" style="margin-top: 20px; padding: 0 .7em;">
|
8
|
+
<p>
|
9
|
+
<span class="ui-icon ui-icon-info" style="float: left; margin-right: .3em;"></span>
|
10
|
+
<span id="resultmsg"></span>
|
11
|
+
</p>
|
12
|
+
</div>
|
13
|
+
</div>
|
14
|
+
<div class="ui-widget" id="errorbox">
|
15
|
+
<div class="ui-state-error ui-corner-all" style="padding: 0 .7em;">
|
16
|
+
<p>
|
17
|
+
<span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span>
|
18
|
+
<span id="errormsg"></span>
|
19
|
+
</p>
|
20
|
+
</div>
|
21
|
+
</div>
|
6
22
|
<div class="entries">
|
7
23
|
<table class="entrytable">
|
8
24
|
<thead>
|
@@ -12,6 +28,9 @@
|
|
12
28
|
<th>
|
13
29
|
Username
|
14
30
|
</th>
|
31
|
+
<th>
|
32
|
+
Url
|
33
|
+
</th>
|
15
34
|
<th>
|
16
35
|
Password functions
|
17
36
|
</th>
|
data/resources/views/layout.erb
CHANGED
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lockr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marc Doerflinger
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-11-
|
11
|
+
date: 2013-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: highline
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.6.
|
19
|
+
version: 1.6.20
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.6.
|
26
|
+
version: 1.6.20
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 1.4.4
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: sinatra-contrib
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 1.4.1
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 1.4.1
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: clipboard
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -130,12 +144,12 @@ description: "Lockr is a password manager that features a local web interface \n
|
|
130
144
|
email: info@byteblues.com
|
131
145
|
executables:
|
132
146
|
- lockr
|
133
|
-
-
|
147
|
+
- weblockr
|
134
148
|
extensions: []
|
135
149
|
extra_rdoc_files: []
|
136
150
|
files:
|
137
|
-
- bin/httplockr.rb
|
138
151
|
- bin/lockr
|
152
|
+
- bin/weblockr
|
139
153
|
- lib/lockr/action/add.rb
|
140
154
|
- lib/lockr/action/base.rb
|
141
155
|
- lib/lockr/action/list.rb
|
data/bin/httplockr.rb
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'lockr/http/httplockrinit'
|
4
|
-
require 'erb'
|
5
|
-
require 'clipboard'
|
6
|
-
require 'padrino-helpers'
|
7
|
-
|
8
|
-
include ERB::Util
|
9
|
-
|
10
|
-
init = HttpLockrInit.new()
|
11
|
-
init.start()
|
12
|
-
|
13
|
-
# now start sinatra
|
14
|
-
require 'sinatra'
|
15
|
-
|
16
|
-
if init.getLoadBrowser
|
17
|
-
require "browser_gui"
|
18
|
-
end
|
19
|
-
|
20
|
-
register Padrino::Helpers
|
21
|
-
|
22
|
-
set :pwdmgr, init.getPwdMgr()
|
23
|
-
# server config
|
24
|
-
set :public_dir, File.expand_path('../../resources/static', __FILE__)
|
25
|
-
set :bind, '127.0.0.1'
|
26
|
-
set :port, 32187
|
27
|
-
set :views, File.expand_path('../../resources/views', __FILE__)
|
28
|
-
enable :run
|
29
|
-
|
30
|
-
get '/' do
|
31
|
-
dir = settings.pwdmgr.list()
|
32
|
-
erb :index, :locals => { :directory => dir }
|
33
|
-
end
|
34
|
-
|
35
|
-
get '/password' do
|
36
|
-
id = params[:id]
|
37
|
-
username = params[:username]
|
38
|
-
settings.pwdmgr.copy_to_clipboard( id, username)
|
39
|
-
redirect '/'
|
40
|
-
end
|
41
|
-
|
42
|
-
post '/password' do
|
43
|
-
id = params[:id]
|
44
|
-
username = params[:username]
|
45
|
-
password = params[:password]
|
46
|
-
newPwdstore = settings.pwdmgr.add( id, username, password)
|
47
|
-
dir = settings.pwdmgr.list()
|
48
|
-
redirect '/'
|
49
|
-
end
|
50
|
-
|
51
|
-
patch '/password' do
|
52
|
-
id = params[:id]
|
53
|
-
username = params[:username]
|
54
|
-
password = params[:password]
|
55
|
-
settings.pwdmgr.change( id, username, password)
|
56
|
-
redirect '/'
|
57
|
-
end
|
58
|
-
|
59
|
-
delete '/password' do
|
60
|
-
id = params[:id]
|
61
|
-
username = params[:username]
|
62
|
-
settings.pwdmgr.delete( id, username)
|
63
|
-
redirect '/'
|
64
|
-
end
|
65
|
-
|