Parcourir la source

Adding existing users an app after it is installed and removing users from uninstalled apps

Bob Mottram il y a 8 ans
Parent
révision
2018dee82c
3 fichiers modifiés avec 95 ajouts et 4 suppressions
  1. 5
    2
      src/freedombone-adduser
  2. 5
    2
      src/freedombone-rmuser
  3. 85
    0
      src/freedombone-utils-selector

+ 5
- 2
src/freedombone-adduser Voir le fichier

@@ -39,13 +39,13 @@ CONFIGURATION_FILE=$HOME/${PROJECT_NAME}.cfg
39 39
 UTILS_FILES=/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-*
40 40
 for f in $UTILS_FILES
41 41
 do
42
-  source $f
42
+    source $f
43 43
 done
44 44
 
45 45
 APP_FILES=/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-*
46 46
 for f in $APP_FILES
47 47
 do
48
-  source $f
48
+    source $f
49 49
 done
50 50
 
51 51
 MY_USERNAME=$1
@@ -223,6 +223,9 @@ do
223 223
             ${PROJECT_NAME}-rmuser $MY_USERNAME
224 224
             exit 672392
225 225
         fi
226
+        if ! grep -q "${app_name}_${MY_USERNAME}" $APP_USERS_FILE; then
227
+            echo "${app_name}_${MY_USERNAME}" >> $APP_USERS_FILE
228
+        fi
226 229
     fi
227 230
 done
228 231
 

+ 5
- 2
src/freedombone-rmuser Voir le fichier

@@ -40,13 +40,13 @@ COMPLETION_FILE=$HOME/${PROJECT_NAME}-completed.txt
40 40
 UTILS_FILES=/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-*
41 41
 for f in $UTILS_FILES
42 42
 do
43
-  source $f
43
+    source $f
44 44
 done
45 45
 
46 46
 APP_FILES=/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-*
47 47
 for f in $APP_FILES
48 48
 do
49
-  source $f
49
+    source $f
50 50
 done
51 51
 
52 52
 if [ ! $MY_USERNAME ]; then
@@ -117,6 +117,9 @@ do
117 117
         echo $"Removing user from ${app_name}"
118 118
         app_load_variables ${app_name}
119 119
         remove_user_${app_name} "$MY_USERNAME"
120
+        if grep -q "${app_name}_${MY_USERNAME}" $APP_USERS_FILE; then
121
+            sed -i "/${app_name}_${MY_USERNAME}/d" $APP_USERS_FILE
122
+        fi
120 123
     fi
121 124
 done
122 125
 

+ 85
- 0
src/freedombone-utils-selector Voir le fichier

@@ -45,6 +45,10 @@ REMOVED_APPS_FILE=/root/removed
45 45
 
46 46
 INSTALLED_APPS_LIST=/usr/share/${PROJECT_NAME}/installed.txt
47 47
 
48
+# keep a list of which users have been added to which apps
49
+# so that when a new app is added existing users can be added
50
+APP_USERS_FILE=$HOME/app_users.txt
51
+
48 52
 if [ ! $COMPLETION_FILE ]; then
49 53
     COMPLETION_FILE=$HOME/${PROJECT_NAME}-completed.txt
50 54
 fi
@@ -385,6 +389,11 @@ function remove_apps {
385 389
     do
386 390
         if [[ ${APPS_INSTALLED[$app_index]} == "1" ]]; then
387 391
             if [[ ${APPS_CHOSEN[$app_index]} == "0" ]]; then
392
+                echo $"Removing users for application: ${a}"
393
+
394
+                function_check remove_users_for_app
395
+                remove_users_for_app ${a}
396
+
388 397
                 echo $"Removing application: ${a}"
389 398
 
390 399
                 function_check app_load_variables
@@ -423,6 +432,76 @@ function install_apps_interactive {
423 432
     echo $"Interactive settings complete"
424 433
 }
425 434
 
435
+function user_added_to_app {
436
+    user_name="$1"
437
+    app_name="$2"
438
+
439
+    if [[ $(is_valid_user "$user_name") == "1" ]]; then
440
+        if [[ $(function_exists add_user_${app_name}) == "1" ]]; then
441
+            if grep -Fxq "${app_name}_${user_name}" $APP_USERS_FILE; then
442
+                echo "1"
443
+                return
444
+            fi
445
+        fi
446
+    fi
447
+    echo "0"
448
+}
449
+
450
+function add_users_after_install {
451
+    app_name="$1"
452
+
453
+    read_config_param MY_USERNAME
454
+
455
+    # ensure a minimum password length
456
+    if [ ! $MINIMUM_PASSWORD_LENGTH ]; then
457
+        MINIMUM_PASSWORD_LENGTH=20
458
+    fi
459
+    if [ ${#MINIMUM_PASSWORD_LENGTH} -lt 20 ]; then
460
+        MINIMUM_PASSWORD_LENGTH=20
461
+    fi
462
+
463
+    ADMIN_USERNAME=$(get_completion_param "Admin user")
464
+    if [ ! $ADMIN_USERNAME ]; then
465
+        ADMIN_USERNAME=$MY_USERNAME
466
+    fi
467
+
468
+    for d in /home/*/ ; do
469
+        USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
470
+        if [[ "$USERNAME" != "$ADMIN_USERNAME" ]]; then
471
+            if [[ $(user_added_to_app "${USERNAME}" "${app_name}") == "0" ]]; then
472
+                valstr=$"Login for user ${USERNAME}="
473
+                if grep -q "${valstr}" /home/${ADMIN_USERNAME}/README; then
474
+                    app_password=$(cat /home/${ADMIN_USERNAME}/README | grep "${valstr}" | head -n 1 | awk -F '=' '{print $2}')
475
+                else
476
+                    app_password="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
477
+                    echo "${valstr}${app_password}" >> /home/${ADMIN_USERNAME}/README
478
+                fi
479
+                add_user_${app_name} "${USERNAME}" "${app_password}"
480
+                echo "${app_name}_${USERNAME}" >> $APP_USERS_FILE
481
+                chown ${ADMIN_USERNAME}:${ADMIN_USERNAME} /home/${ADMIN_USERNAME}/README
482
+            fi
483
+        fi
484
+    done
485
+}
486
+
487
+function remove_users_for_app {
488
+    app_name="$1"
489
+
490
+    read_config_param MY_USERNAME
491
+
492
+    for d in /home/*/ ; do
493
+        USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
494
+        if [[ "$USERNAME" != "$MY_USERNAME" ]]; then
495
+            if [[ $(user_added_to_app "${USERNAME}" "${app_name}") == "1" ]]; then
496
+                if [[ $(function_exists remove_user_${app_name}) == "1" ]]; then
497
+                    remove_user_${app_name} "${USERNAME}"
498
+                fi
499
+                sed -i "/${app_name}_${USERNAME}/d" $APP_USERS_FILE
500
+            fi
501
+        fi
502
+    done
503
+}
504
+
426 505
 function install_apps {
427 506
     is_interactive=$1
428 507
 
@@ -459,6 +538,9 @@ function install_apps {
459 538
                             function_check app_save_variables
460 539
                             app_save_variables ${a}
461 540
 
541
+                            function_check add_users_after_install
542
+                            add_users_after_install ${a}
543
+
462 544
                             function_check install_completed
463 545
                             install_completed ${a}
464 546
                             echo $"${a} was installed from interactive"
@@ -485,6 +567,9 @@ function install_apps {
485 567
                                 function_check app_save_variables
486 568
                                 app_save_variables ${a}
487 569
 
570
+                                function_check add_users_after_install
571
+                                add_users_after_install ${a}
572
+
488 573
                                 function_check install_completed
489 574
                                 install_completed ${a}
490 575
                                 echo $"${a} was installed"