|
@@ -49,6 +49,7 @@ CURR_APP=
|
49
|
49
|
REMOVE_APP=
|
50
|
50
|
CURR_PASSWORD=""
|
51
|
51
|
TESTS=
|
|
52
|
+EXPORT_FILENAME=
|
52
|
53
|
|
53
|
54
|
# If this file is present then don't store passwords
|
54
|
55
|
NO_PASSWORD_STORE_FILE=~/.nostore
|
|
@@ -73,6 +74,7 @@ function pass_show_help {
|
73
|
74
|
echo $' -u --user [name] Username'
|
74
|
75
|
echo $' -a --app [name] Name of the application'
|
75
|
76
|
echo $' -p --pass [password] The password to store'
|
|
77
|
+ echo $' --export [filename] Export to KeepassX XML'
|
76
|
78
|
echo ''
|
77
|
79
|
echo $'To encrypt a password:'
|
78
|
80
|
echo ''
|
|
@@ -145,6 +147,41 @@ function clear_passwords {
|
145
|
147
|
exit 0
|
146
|
148
|
}
|
147
|
149
|
|
|
150
|
+function export_to_keepass {
|
|
151
|
+ filename = "$1"
|
|
152
|
+
|
|
153
|
+ echo '<database>' > $filename
|
|
154
|
+ echo ' <group>' >> $filename
|
|
155
|
+ echo " <title>${PROJECT_NAME}</title>" >> $filename
|
|
156
|
+ echo ' <icon>48</icon>' >> $filename
|
|
157
|
+
|
|
158
|
+ for d in /root/.passwords/*/ ; do
|
|
159
|
+ USERNAME=$(echo "$d" | awk -F '/' '{print $4}')
|
|
160
|
+ echo ' <group>' >> $filename
|
|
161
|
+ echo " <title>$USERNAME</title>" >> $filename
|
|
162
|
+ echo ' <icon>0</icon>' >> $filename
|
|
163
|
+ for a in /root/.passwords/$USERNAME/*/ ; do
|
|
164
|
+ APP_NAME=$(echo "$a" | awk -F '/' '{print $5}')
|
|
165
|
+ app_password=$(${PROJECT_NAME}-pass -u $USERNAME -a $APP_NAME)
|
|
166
|
+ echo ' <entry>' >> $filename
|
|
167
|
+ echo " <title>$APP_NAME</title>" >> $filename
|
|
168
|
+ echo " <username>$USERNAME</username>" >> $filename
|
|
169
|
+ echo " <password>$app_password</password>" >> $filename
|
|
170
|
+ echo ' <url/>' >> $filename
|
|
171
|
+ echo ' <comment/>' >> $filename
|
|
172
|
+ echo ' <icon>0</icon>' >> $filename
|
|
173
|
+ echo ' <expire>Never</expire>' >> $filename
|
|
174
|
+ echo ' </entry>' >> $filename
|
|
175
|
+ done
|
|
176
|
+ echo ' </group>' >> $filename
|
|
177
|
+ done
|
|
178
|
+
|
|
179
|
+ echo ' </group>' >> $filename
|
|
180
|
+ echo '</database>' >> $filename
|
|
181
|
+
|
|
182
|
+ echo $"Exported $filename"
|
|
183
|
+}
|
|
184
|
+
|
148
|
185
|
while [[ $# > 1 ]]
|
149
|
186
|
do
|
150
|
187
|
key="$1"
|
|
@@ -183,6 +220,10 @@ do
|
183
|
220
|
shift
|
184
|
221
|
CURR_APP="${1}"
|
185
|
222
|
;;
|
|
223
|
+ --export)
|
|
224
|
+ shift
|
|
225
|
+ EXPORT_FILENAME="${1}"
|
|
226
|
+ ;;
|
186
|
227
|
-p|--pass|--password|--passphrase)
|
187
|
228
|
shift
|
188
|
229
|
CURR_PASSWORD="${1}"
|
|
@@ -211,6 +252,11 @@ if [ $TESTS ]; then
|
211
|
252
|
exit 0
|
212
|
253
|
fi
|
213
|
254
|
|
|
255
|
+if [ $EXPORT_FILENAME ]; then
|
|
256
|
+ export_to_keepass $EXPORT_FILENAME
|
|
257
|
+ exit 0
|
|
258
|
+fi
|
|
259
|
+
|
214
|
260
|
if [ ! $CURR_USERNAME ]; then
|
215
|
261
|
echo $'Error: No username given'
|
216
|
262
|
exit 1
|