Kaynağa Gözat

Hash etherpad passwords

Bob Mottram 8 yıl önce
ebeveyn
işleme
ef0b5366de
1 değiştirilmiş dosya ile 13 ekleme ve 8 silme
  1. 13
    8
      src/freedombone-app-etherpad

+ 13
- 8
src/freedombone-app-etherpad Dosyayı Görüntüle

@@ -53,20 +53,24 @@ etherpad_variables=(ETHERPAD_COMMIT
53 53
                     DDNS_PROVIDER
54 54
                     MY_USERNAME)
55 55
 
56
+function etherpad_password_hash {
57
+    echo $(python -c "from passlib.hash import bcrypt;print(bcrypt.encrypt(\"$1\", rounds=10))")
58
+}
59
+
56 60
 function change_password_etherpad {
57 61
     change_username="$1"
58
-    new_user_password="$2"
62
+    new_user_password=$(etherpad_password_hash "$2")
59 63
 
60 64
     read_config_param ETHERPAD_DOMAIN_NAME
61 65
 
62 66
     if grep "\"$change_username\": {" /var/www/${ETHERPAD_DOMAIN_NAME}/htdocs/settings.json; then
63 67
         user_line=$(cat /var/www/${ETHERPAD_DOMAIN_NAME}/htdocs/settings.json | grep "\"$change_username\": {")
64 68
         if [[ "$user_line" == *"\"is_admin\": true"* ]]; then
65
-            sed -i "s|\"$change_username\": {.*|\"$change_username\": { \"password\": \"$new_user_password\", \"is_admin\": true }|g" /var/www/${ETHERPAD_DOMAIN_NAME}/htdocs/settings.json
69
+            sed -i "s|\"$change_username\": {.*|\"$change_username\": { \"hash\": \"$new_user_password\", \"is_admin\": true }|g" /var/www/${ETHERPAD_DOMAIN_NAME}/htdocs/settings.json
66 70
         else
67
-            sed -i "s|\"$change_username\": {.*|\"$change_username\": { \"password\": \"$new_user_password\", \"is_admin\": false },|g" /var/www/${ETHERPAD_DOMAIN_NAME}/htdocs/settings.json
71
+            sed -i "s|\"$change_username\": {.*|\"$change_username\": { \"hash\": \"$new_user_password\", \"is_admin\": false },|g" /var/www/${ETHERPAD_DOMAIN_NAME}/htdocs/settings.json
68 72
         fi
69
-        ${PROJECT_NAME}-pass -u $change_username -a etherpad -p "$new_user_password"
73
+        ${PROJECT_NAME}-pass -u $change_username -a etherpad -p "$2"
70 74
         systemctl restart etherpad
71 75
     fi
72 76
 }
@@ -146,7 +150,7 @@ function create_etherpad_settings {
146 150
     echo '  "disableIPlogging" : true,' >> $settings_file
147 151
 
148 152
     echo '  "users": {' >> $settings_file
149
-    echo "    \"${MY_USERNAME}\": { \"password\": \"${ETHERPAD_ADMIN_PASSWORD}\", \"is_admin\": true }" >> $settings_file
153
+    echo "    \"${MY_USERNAME}\": { \"hash\": \"$(etherpad_password_hash "${ETHERPAD_ADMIN_PASSWORD}")\", \"is_admin\": true }" >> $settings_file
150 154
     echo '  },' >> $settings_file
151 155
 
152 156
     echo '  "socketTransportProtocols" : ["xhr-polling", "jsonp-polling", "htmlfile"],' >> $settings_file
@@ -187,12 +191,12 @@ function remove_user_etherpad {
187 191
 
188 192
 function add_user_etherpad {
189 193
     new_username="$1"
190
-    new_user_password="$2"
194
+    new_user_password=$(etherpad_password_hash "$2")
191 195
     settings_file=/var/www/${ETHERPAD_DOMAIN_NAME}/htdocs/settings.json
192 196
 
193 197
     if ! grep -q "\"$new_username\": {" $settings_file; then
194 198
         ${PROJECT_NAME}-pass -u $new_username -a etherpad -p "$new_user_password"
195
-        sed -i "/\"users\": {/a    \"$new_username\": { \"password\": \"$new_user_password\", \"is_admin\": false }," $settings_file
199
+        sed -i "/\"users\": {/a    \"$new_username\": { \"hash\": \"$new_user_password\", \"is_admin\": false }," $settings_file
196 200
         if grep -q "\"$new_username\": {" $settings_file; then
197 201
             systemctl restart etherpad
198 202
         else
@@ -458,7 +462,8 @@ function install_etherpad {
458 462
     repair_databases_script
459 463
 
460 464
     apt-get -yq install gzip git curl python libssl-dev pkg-config \
461
-            build-essential python g++ make checkinstall
465
+            build-essential python g++ make checkinstall \
466
+            python-bcrypt python-passlib
462 467
 
463 468
     function_check install_nodejs
464 469
     install_nodejs etherpad