Skip to content

Commit 56ca857

Browse files
committed
Backup enterprise-manage password hash file if present
1 parent 8138258 commit 56ca857

2 files changed

Lines changed: 43 additions & 0 deletions

File tree

bin/ghe-backup

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,25 @@ echo "Backing up GitHub settings ..."
9494
ghe-ssh "$host" -- 'ghe-export-settings' > settings.json ||
9595
failures="$failures settings"
9696

97+
# transfer license file
9798
ghe-ssh "$host" -- "cat '$GHE_REMOTE_LICENSE_FILE'" > enterprise.ghl ||
9899
failures="$failures license"
99100

101+
# transfer enterprise manage password hash if running against a v2.x instance.
102+
if [ "$GHE_VERSION_MAJOR" -ge 2 ]; then
103+
manage_password_file="$GHE_REMOTE_DATA_USER_DIR/common/manage-password"
104+
if echo "sudo cat '$manage_password_file' 2>/dev/null || true" |
105+
ghe-ssh "$host" -- /bin/sh > manage-password+
106+
then
107+
if [ -n "$(cat manage-password+)" ]; then
108+
mv manage-password+ manage-password
109+
fi
110+
else
111+
unlink manage-password+
112+
failures="$failures manage-password"
113+
fi
114+
fi
115+
100116
echo "Backing up SSH authorized keys ..."
101117
ghe-ssh "$host" -- 'ghe-export-authorized-keys' > authorized-keys.json ||
102118
failures="$failures authorized-keys"

test/test-ghe-backup.sh

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ cd "$GHE_REMOTE_DATA_USER_DIR/pages"
1313
mkdir -p alice bob
1414
touch alice/index.html bob/index.html
1515

16+
# Create a fake manage password file
17+
mkdir -p "$GHE_REMOTE_DATA_USER_DIR/common"
18+
echo "fake password hash data" > "$GHE_REMOTE_DATA_USER_DIR/common/manage-password"
19+
1620
# Create some fake elasticsearch data in the remote data directory
1721
mkdir -p "$GHE_REMOTE_DATA_USER_DIR/elasticsearch"
1822
cd "$GHE_REMOTE_DATA_USER_DIR/elasticsearch"
@@ -102,6 +106,11 @@ begin_test "ghe-backup first snapshot"
102106
# verify all ES data was transferred from snapshot directory
103107
diff -ru "$GHE_REMOTE_DATA_USER_DIR/elasticsearch-snapshots" "$GHE_DATA_DIR/current/elasticsearch"
104108
fi
109+
110+
# verify manage-password file was backed up under v2.x VMs
111+
if [ "$GHE_VERSION_MAJOR" -ge 2 ]; then
112+
[ "$(cat "$GHE_DATA_DIR/current/manage-password")" = "fake password hash data" ]
113+
fi
105114
)
106115
end_test
107116

@@ -167,6 +176,11 @@ begin_test "ghe-backup subsequent snapshot"
167176
# verify all ES data was transferred from snapshot directory
168177
diff -ru "$GHE_REMOTE_DATA_USER_DIR/elasticsearch-snapshots" "$GHE_DATA_DIR/current/elasticsearch"
169178
fi
179+
180+
# verify manage-password file was backed up under v2.x VMs
181+
if [ "$GHE_VERSION_MAJOR" -ge 2 ]; then
182+
[ "$(cat "$GHE_DATA_DIR/current/manage-password")" = "fake password hash data" ]
183+
fi
170184
)
171185
end_test
172186

@@ -208,5 +222,18 @@ begin_test "ghe-backup fails fast when other run in progress"
208222

209223
ln -s 1 "$GHE_DATA_DIR/in-progress"
210224
! ghe-backup
225+
226+
unlink "$GHE_DATA_DIR/in-progress"
227+
)
228+
end_test
229+
230+
begin_test "ghe-backup without manage-password file"
231+
(
232+
set -e
233+
234+
unlink "$GHE_REMOTE_DATA_USER_DIR/common/manage-password"
235+
ghe-backup
236+
237+
[ ! -f "$GHE_DATA_DIR/current/manage-password" ]
211238
)
212239
end_test

0 commit comments

Comments
 (0)