|  | @@ -128,6 +128,64 @@ function change_password {
 | 
	
		
			
			| 128 | 128 |      any_key
 | 
	
		
			
			| 129 | 129 |  }
 | 
	
		
			
			| 130 | 130 |  
 | 
	
		
			
			|  | 131 | +function change_ssh_public_key {
 | 
	
		
			
			|  | 132 | +    select_user
 | 
	
		
			
			|  | 133 | +    if [ ! $SELECTED_USERNAME ]; then
 | 
	
		
			
			|  | 134 | +        return
 | 
	
		
			
			|  | 135 | +    fi
 | 
	
		
			
			|  | 136 | +
 | 
	
		
			
			|  | 137 | +    if grep -Fxq "Admin user: $SELECTED_USERNAME" $COMPLETION_FILE; then
 | 
	
		
			
			|  | 138 | +        dialog --title "Change ssh public key" \
 | 
	
		
			
			|  | 139 | +               --backtitle "Freedombone Control Panel" \
 | 
	
		
			
			|  | 140 | +               --defaultno \
 | 
	
		
			
			|  | 141 | +               --yesno "\nThis is the administrator user.\n\nAre you sure you want to change the ssh public key for the administrator?" 10 60
 | 
	
		
			
			|  | 142 | +        sel=$?
 | 
	
		
			
			|  | 143 | +        case $sel in
 | 
	
		
			
			|  | 144 | +            1) return;;
 | 
	
		
			
			|  | 145 | +            255) return;;
 | 
	
		
			
			|  | 146 | +        esac
 | 
	
		
			
			|  | 147 | +    fi
 | 
	
		
			
			|  | 148 | +
 | 
	
		
			
			|  | 149 | +    data=$(tempfile 2>/dev/null)
 | 
	
		
			
			|  | 150 | +    trap "rm -f $data" 0 1 2 5 15
 | 
	
		
			
			|  | 151 | +    dialog --title "Change ssh public key for $SELECTED_USERNAME" \
 | 
	
		
			
			|  | 152 | +           --backtitle "Freedombone Control Panel" \
 | 
	
		
			
			|  | 153 | +           --inputbox "Paste the ssh public key below" 8 60 2>$data
 | 
	
		
			
			|  | 154 | +    sel=$?
 | 
	
		
			
			|  | 155 | +    case $sel in
 | 
	
		
			
			|  | 156 | +        0)
 | 
	
		
			
			|  | 157 | +            SSH_PUBLIC_KEY=$(<$data)
 | 
	
		
			
			|  | 158 | +            if [ "$SSH_PUBLIC_KEY" ]; then
 | 
	
		
			
			|  | 159 | +                if [ ${#SSH_PUBLIC_KEY} -gt 5 ]; then
 | 
	
		
			
			|  | 160 | +                    if [ -f "$SSH_PUBLIC_KEY" ]; then
 | 
	
		
			
			|  | 161 | +                        if [ ! -d /home/$SELECTED_USERNAME/.ssh ]; then
 | 
	
		
			
			|  | 162 | +                            mkdir /home/$SELECTED_USERNAME/.ssh
 | 
	
		
			
			|  | 163 | +                        fi
 | 
	
		
			
			|  | 164 | +                        cp $SSH_PUBLIC_KEY \
 | 
	
		
			
			|  | 165 | +                           /home/$SELECTED_USERNAME/.ssh/authorized_keys
 | 
	
		
			
			|  | 166 | +                        chown -R $SELECTED_USERNAME:$SELECTED_USERNAME \
 | 
	
		
			
			|  | 167 | +                              /home/$SELECTED_USERNAME/.ssh
 | 
	
		
			
			|  | 168 | +                        dialog --title "Change ssh public key" \
 | 
	
		
			
			|  | 169 | +                               --msgbox "ssh public key was installed" 6 40
 | 
	
		
			
			|  | 170 | +                    else
 | 
	
		
			
			|  | 171 | +                        if [[ "$SSH_PUBLIC_KEY" == "ssh-"* ]]; then
 | 
	
		
			
			|  | 172 | +                            if [ ! -d /home/$SELECTED_USERNAME/.ssh ]; then
 | 
	
		
			
			|  | 173 | +                                mkdir /home/$SELECTED_USERNAME/.ssh
 | 
	
		
			
			|  | 174 | +                            fi
 | 
	
		
			
			|  | 175 | +                            echo "$SSH_PUBLIC_KEY" > \
 | 
	
		
			
			|  | 176 | +                                 /home/$SELECTED_USERNAME/.ssh/authorized_keys
 | 
	
		
			
			|  | 177 | +                            chown -R $SELECTED_USERNAME:$SELECTED_USERNAME \
 | 
	
		
			
			|  | 178 | +                                  /home/$SELECTED_USERNAME/.ssh
 | 
	
		
			
			|  | 179 | +                            dialog --title "Change ssh public key" \
 | 
	
		
			
			|  | 180 | +                                   --msgbox "ssh public key was installed" 6 40
 | 
	
		
			
			|  | 181 | +                        fi
 | 
	
		
			
			|  | 182 | +                    fi
 | 
	
		
			
			|  | 183 | +                fi
 | 
	
		
			
			|  | 184 | +            fi
 | 
	
		
			
			|  | 185 | +            ;;
 | 
	
		
			
			|  | 186 | +    esac
 | 
	
		
			
			|  | 187 | +}
 | 
	
		
			
			|  | 188 | +
 | 
	
		
			
			| 131 | 189 |  function add_to_mailing_list {
 | 
	
		
			
			| 132 | 190 |      select_user
 | 
	
		
			
			| 133 | 191 |      if [ ! $SELECTED_USERNAME ]; then
 |