Move to the next view when we are done elevating
This commit is contained in:
parent
57895a1901
commit
e412a2ffbf
2 changed files with 37 additions and 28 deletions
|
@ -3,6 +3,8 @@ package internal
|
||||||
import (
|
import (
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
|
|
||||||
|
"github.com/HikariKnight/quickpassthrough/internal/logger"
|
||||||
|
"github.com/HikariKnight/quickpassthrough/pkg/command"
|
||||||
tea "github.com/charmbracelet/bubbletea"
|
tea "github.com/charmbracelet/bubbletea"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -12,7 +14,7 @@ func (m *model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||||
case tea.KeyMsg:
|
case tea.KeyMsg:
|
||||||
|
|
||||||
// If we are not done
|
// If we are not done
|
||||||
if m.focused != INSTALL {
|
if m.focused != INSTALL && m.focused != DONE {
|
||||||
// Setup keybindings
|
// Setup keybindings
|
||||||
switch msg.String() {
|
switch msg.String() {
|
||||||
case "ctrl+c", "q":
|
case "ctrl+c", "q":
|
||||||
|
@ -22,9 +24,7 @@ func (m *model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||||
case "enter":
|
case "enter":
|
||||||
if m.width != 0 {
|
if m.width != 0 {
|
||||||
// Process the selected item, if the return value is true then exit the application
|
// Process the selected item, if the return value is true then exit the application
|
||||||
if m.processSelection() {
|
m.processSelection()
|
||||||
return m, tea.ExitAltScreen
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
case "ctrl+z", "backspace":
|
case "ctrl+z", "backspace":
|
||||||
// Go backwards in the model
|
// Go backwards in the model
|
||||||
|
@ -49,8 +49,13 @@ func (m *model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||||
return m, tea.Quit
|
return m, tea.Quit
|
||||||
|
|
||||||
case "enter":
|
case "enter":
|
||||||
// Start installation and send the password to the command
|
// If we are on the INSTALL dialog
|
||||||
m.install(
|
if m.focused == INSTALL {
|
||||||
|
// Write to logger
|
||||||
|
logger.Printf("Getting authentication token by elevating with sudo once")
|
||||||
|
|
||||||
|
// Elevate with sudo
|
||||||
|
command.Elevate(
|
||||||
base64.StdEncoding.EncodeToString(
|
base64.StdEncoding.EncodeToString(
|
||||||
[]byte(
|
[]byte(
|
||||||
m.authDialog.Value(),
|
m.authDialog.Value(),
|
||||||
|
@ -58,8 +63,25 @@ func (m *model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Write to logger
|
||||||
|
logger.Printf("Attempting to free hash from memory")
|
||||||
|
|
||||||
// Blank the password field
|
// Blank the password field
|
||||||
m.authDialog.SetValue("")
|
m.authDialog.SetValue("")
|
||||||
|
|
||||||
|
// Start installation and send the password to the command
|
||||||
|
m.install()
|
||||||
|
|
||||||
|
// Move to the DONE dialog
|
||||||
|
m.focused++
|
||||||
|
|
||||||
|
// Exit the alt screen as the output on the done dialog needs to be scrollable
|
||||||
|
return m, tea.ExitAltScreen
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// Quit the application if we are on a different view
|
||||||
|
return m, tea.Quit
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Issue an UI update
|
// Issue an UI update
|
||||||
|
|
|
@ -8,7 +8,6 @@ import (
|
||||||
"github.com/HikariKnight/ls-iommu/pkg/errorcheck"
|
"github.com/HikariKnight/ls-iommu/pkg/errorcheck"
|
||||||
"github.com/HikariKnight/quickpassthrough/internal/configs"
|
"github.com/HikariKnight/quickpassthrough/internal/configs"
|
||||||
"github.com/HikariKnight/quickpassthrough/internal/logger"
|
"github.com/HikariKnight/quickpassthrough/internal/logger"
|
||||||
"github.com/HikariKnight/quickpassthrough/pkg/command"
|
|
||||||
"github.com/HikariKnight/quickpassthrough/pkg/fileio"
|
"github.com/HikariKnight/quickpassthrough/pkg/fileio"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -145,22 +144,10 @@ func (m *model) processSelection() bool {
|
||||||
|
|
||||||
// This function starts the install process
|
// This function starts the install process
|
||||||
// It takes 1 auth string as variable
|
// It takes 1 auth string as variable
|
||||||
func (m *model) install(auth string) {
|
func (m *model) install() {
|
||||||
// Get the config
|
// Get the config
|
||||||
config := configs.GetConfig()
|
config := configs.GetConfig()
|
||||||
|
|
||||||
// Write to logger
|
|
||||||
logger.Printf("Getting authentication token by elevating with sudo once")
|
|
||||||
|
|
||||||
// Elevate to sudo
|
|
||||||
command.Elevate(auth)
|
|
||||||
|
|
||||||
// Write to logger
|
|
||||||
logger.Printf("Attempting to free hash from memory")
|
|
||||||
|
|
||||||
// Blank out the variable
|
|
||||||
auth = ""
|
|
||||||
|
|
||||||
// Based on the bootloader, setup the configuration
|
// Based on the bootloader, setup the configuration
|
||||||
if config.Bootloader == "kernelstub" {
|
if config.Bootloader == "kernelstub" {
|
||||||
// Write to logger
|
// Write to logger
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue