password safety
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
module github.com/RudideC/wyst-package-manager
|
module github.com/RudideC/wyst-package-manager
|
||||||
|
|
||||||
go 1.22.0
|
go 1.22.0
|
||||||
|
|
||||||
|
require (
|
||||||
|
golang.org/x/sys v0.20.0 // indirect
|
||||||
|
golang.org/x/term v0.20.0 // direct
|
||||||
|
)
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
|
||||||
|
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
|
golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw=
|
||||||
|
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
|
||||||
+11
-4
@@ -30,10 +30,17 @@ func parsePackageArg(arg string) (string, string) {
|
|||||||
|
|
||||||
func createPackage(packageName string) {
|
func createPackage(packageName string) {
|
||||||
var psw string
|
var psw string
|
||||||
|
var pswV string
|
||||||
var repo string
|
var repo string
|
||||||
var version string
|
var version string
|
||||||
fmt.Printf("Enter the password for %s: ", packageName)
|
fmt.Printf("Enter the password for %s: ", packageName)
|
||||||
fmt.Scanln(&psw)
|
ReadPassword(&psw)
|
||||||
|
fmt.Printf("Verify the password for %s: ", packageName)
|
||||||
|
ReadPassword(&pswV)
|
||||||
|
if psw != pswV {
|
||||||
|
fmt.Printf("Passwords do not match\n")
|
||||||
|
return
|
||||||
|
}
|
||||||
fmt.Printf("Enter the repo for %s: ", packageName)
|
fmt.Printf("Enter the repo for %s: ", packageName)
|
||||||
fmt.Scanln(&repo)
|
fmt.Scanln(&repo)
|
||||||
fmt.Printf("Enter the latest version for %s: ", packageName)
|
fmt.Printf("Enter the latest version for %s: ", packageName)
|
||||||
@@ -56,7 +63,7 @@ func editPackage(packageName string) {
|
|||||||
var newPackageName string = packageName
|
var newPackageName string = packageName
|
||||||
|
|
||||||
fmt.Printf("Enter the password for %s: ", packageName)
|
fmt.Printf("Enter the password for %s: ", packageName)
|
||||||
fmt.Scanln(&psw)
|
ReadPassword(&psw)
|
||||||
newPsw = psw
|
newPsw = psw
|
||||||
|
|
||||||
for true {
|
for true {
|
||||||
@@ -77,7 +84,7 @@ func editPackage(packageName string) {
|
|||||||
fmt.Scanln(&newPackageName)
|
fmt.Scanln(&newPackageName)
|
||||||
case "2":
|
case "2":
|
||||||
fmt.Printf("Enter the new password for %s: ", packageName)
|
fmt.Printf("Enter the new password for %s: ", packageName)
|
||||||
fmt.Scanln(&newPsw)
|
ReadPassword(&newPsw)
|
||||||
case "3":
|
case "3":
|
||||||
fmt.Printf("Enter the repo for %s: ", packageName)
|
fmt.Printf("Enter the repo for %s: ", packageName)
|
||||||
fmt.Scanln(&repo)
|
fmt.Scanln(&repo)
|
||||||
@@ -106,7 +113,7 @@ func editPackage(packageName string) {
|
|||||||
func deletePackage(packageName string) {
|
func deletePackage(packageName string) {
|
||||||
fmt.Printf("Enter the password for %s: ", packageName)
|
fmt.Printf("Enter the password for %s: ", packageName)
|
||||||
var psw string
|
var psw string
|
||||||
fmt.Scanln(&psw)
|
ReadPassword(&psw)
|
||||||
jsonBody := []byte(fmt.Sprintf(`{"name": "%s", "psw": "%v"}`, packageName, psw))
|
jsonBody := []byte(fmt.Sprintf(`{"name": "%s", "psw": "%v"}`, packageName, psw))
|
||||||
sendRequest(http.MethodDelete, URL, jsonBody)
|
sendRequest(http.MethodDelete, URL, jsonBody)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,10 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"golang.org/x/term"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ProgressBar struct {
|
type ProgressBar struct {
|
||||||
@@ -38,3 +41,34 @@ func (prb ProgressBar) clean() {
|
|||||||
fmt.Printf("\r" + strings.Repeat(" ", prb.last_suffix+prb.length+2) + "\r")
|
fmt.Printf("\r" + strings.Repeat(" ", prb.last_suffix+prb.length+2) + "\r")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ReadPassword(buff *string) error {
|
||||||
|
safeChar := "*"
|
||||||
|
oldState, err := term.MakeRaw(int(os.Stdin.Fd()))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer term.Restore(int(os.Stdin.Fd()), oldState)
|
||||||
|
for true {
|
||||||
|
b := make([]byte, 1)
|
||||||
|
_, err = os.Stdin.Read(b)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
chr := string(b[0])
|
||||||
|
if chr == "\r" || chr == "\n" {
|
||||||
|
return nil
|
||||||
|
} else if chr == "\b" || b[0] == 127 {
|
||||||
|
fmt.Print("\033[1D \033[1D")
|
||||||
|
tmp := string(*buff)
|
||||||
|
*buff = tmp[:len(tmp)-1]
|
||||||
|
}
|
||||||
|
if safeChar == "off" {
|
||||||
|
fmt.Print(chr)
|
||||||
|
} else {
|
||||||
|
fmt.Print(safeChar)
|
||||||
|
}
|
||||||
|
*buff += chr
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user