forked from Plemya-x/ALR
wip
This commit is contained in:
parent
35982a0ae7
commit
6df5baa457
@ -11,7 +11,7 @@
|
|||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="33.5" y="15" fill="#010101" fill-opacity=".3">coverage</text>
|
<text x="33.5" y="15" fill="#010101" fill-opacity=".3">coverage</text>
|
||||||
<text x="33.5" y="14">coverage</text>
|
<text x="33.5" y="14">coverage</text>
|
||||||
<text x="86" y="15" fill="#010101" fill-opacity=".3">15.9%</text>
|
<text x="86" y="15" fill="#010101" fill-opacity=".3">15.8%</text>
|
||||||
<text x="86" y="14">15.9%</text>
|
<text x="86" y="14">15.8%</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 926 B After Width: | Height: | Size: 926 B |
2
info.go
2
info.go
@ -81,7 +81,7 @@ func InfoCmd() *cli.Command {
|
|||||||
return nil
|
return nil
|
||||||
}),
|
}),
|
||||||
Action: func(c *cli.Context) error {
|
Action: func(c *cli.Context) error {
|
||||||
if err := utils.ExitIfCantDropCapsToAlrUser(); err != nil {
|
if err := utils.ExitIfCantDropCapsToAlrUserNoPrivs(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
12
install.go
12
install.go
@ -51,6 +51,10 @@ func InstallCmd() *cli.Command {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := utils.ExitIfCantDropCapsToAlrUser(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
ctx := c.Context
|
ctx := c.Context
|
||||||
|
|
||||||
args := c.Args()
|
args := c.Args()
|
||||||
@ -62,7 +66,7 @@ func InstallCmd() *cli.Command {
|
|||||||
New(ctx).
|
New(ctx).
|
||||||
WithConfig().
|
WithConfig().
|
||||||
WithDB().
|
WithDB().
|
||||||
WithReposNoPull().
|
WithRepos().
|
||||||
WithDistroInfo().
|
WithDistroInfo().
|
||||||
WithManager().
|
WithManager().
|
||||||
Build()
|
Build()
|
||||||
@ -81,12 +85,6 @@ func InstallCmd() *cli.Command {
|
|||||||
}
|
}
|
||||||
defer cleanup()
|
defer cleanup()
|
||||||
|
|
||||||
if deps.Cfg.AutoPull() {
|
|
||||||
if err := deps.Repos.Pull(ctx, deps.Cfg.Repos()); err != nil {
|
|
||||||
return cliutils.FormatCliExit(gotext.Get("Error pulling repositories"), err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
err = builder.InstallPkgs(
|
err = builder.InstallPkgs(
|
||||||
ctx,
|
ctx,
|
||||||
&build.BuildArgs{
|
&build.BuildArgs{
|
||||||
|
@ -92,7 +92,7 @@ func InternalInstallCmd() *cli.Command {
|
|||||||
Action: func(c *cli.Context) error {
|
Action: func(c *cli.Context) error {
|
||||||
logger.SetupForGoPlugin()
|
logger.SetupForGoPlugin()
|
||||||
|
|
||||||
if err := utils.EnuseIsAlrUser(); err != nil {
|
if err := utils.EnsureIsAlrUser(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,7 +127,6 @@ func InternalInstallCmd() *cli.Command {
|
|||||||
Plugins: map[string]plugin.Plugin{
|
Plugins: map[string]plugin.Plugin{
|
||||||
"installer": &build.InstallerPlugin{
|
"installer": &build.InstallerPlugin{
|
||||||
Impl: build.NewInstaller(
|
Impl: build.NewInstaller(
|
||||||
deps.Repos,
|
|
||||||
manager.Detect(),
|
manager.Detect(),
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
|
@ -154,35 +154,31 @@ msgstr ""
|
|||||||
msgid "Install a new package"
|
msgid "Install a new package"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: install.go:58
|
#: install.go:62
|
||||||
msgid "Command install expected at least 1 argument, got %d"
|
msgid "Command install expected at least 1 argument, got %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: install.go:86
|
#: install.go:101
|
||||||
msgid "Error pulling repositories"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: install.go:103
|
|
||||||
msgid "Error parsing os release"
|
msgid "Error parsing os release"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: install.go:148
|
#: install.go:146
|
||||||
msgid "Remove an installed package"
|
msgid "Remove an installed package"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: install.go:166 install.go:216
|
#: install.go:164 install.go:214
|
||||||
msgid "Unable to detect a supported package manager on the system"
|
msgid "Unable to detect a supported package manager on the system"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: install.go:170
|
#: install.go:168
|
||||||
msgid "Error listing installed packages"
|
msgid "Error listing installed packages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: install.go:211
|
#: install.go:209
|
||||||
msgid "Command remove expected at least 1 argument, got %d"
|
msgid "Command remove expected at least 1 argument, got %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: install.go:224
|
#: install.go:222
|
||||||
msgid "Error removing packages"
|
msgid "Error removing packages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -194,6 +190,10 @@ msgstr ""
|
|||||||
msgid "Error initialization database"
|
msgid "Error initialization database"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: internal/cliutils/app_builder/builder.go:135
|
||||||
|
msgid "Error pulling repositories"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: internal/cliutils/prompt.go:60
|
#: internal/cliutils/prompt.go:60
|
||||||
msgid "Would you like to view the build script for %s"
|
msgid "Would you like to view the build script for %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -311,15 +311,15 @@ msgstr ""
|
|||||||
msgid "ERROR"
|
msgid "ERROR"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: internal/utils/cmd.go:79
|
#: internal/utils/cmd.go:83
|
||||||
msgid "Error dropping capabilities"
|
msgid "Error dropping capabilities"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: internal/utils/cmd.go:86
|
#: internal/utils/cmd.go:103
|
||||||
msgid "You need to be root to perform this action"
|
msgid "You need to be root to perform this action"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: internal/utils/cmd.go:128
|
#: internal/utils/cmd.go:145
|
||||||
msgid "You need to be a %s member to perform this action"
|
msgid "You need to be a %s member to perform this action"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -167,35 +167,31 @@ msgstr "Ошибка кодирования переменных скрита"
|
|||||||
msgid "Install a new package"
|
msgid "Install a new package"
|
||||||
msgstr "Установить новый пакет"
|
msgstr "Установить новый пакет"
|
||||||
|
|
||||||
#: install.go:58
|
#: install.go:62
|
||||||
msgid "Command install expected at least 1 argument, got %d"
|
msgid "Command install expected at least 1 argument, got %d"
|
||||||
msgstr "Для команды install ожидался хотя бы 1 аргумент, получено %d"
|
msgstr "Для команды install ожидался хотя бы 1 аргумент, получено %d"
|
||||||
|
|
||||||
#: install.go:86
|
#: install.go:101
|
||||||
msgid "Error pulling repositories"
|
|
||||||
msgstr "Ошибка при извлечении репозиториев"
|
|
||||||
|
|
||||||
#: install.go:103
|
|
||||||
msgid "Error parsing os release"
|
msgid "Error parsing os release"
|
||||||
msgstr "Ошибка при разборе файла выпуска операционной системы"
|
msgstr "Ошибка при разборе файла выпуска операционной системы"
|
||||||
|
|
||||||
#: install.go:148
|
#: install.go:146
|
||||||
msgid "Remove an installed package"
|
msgid "Remove an installed package"
|
||||||
msgstr "Удалить установленный пакет"
|
msgstr "Удалить установленный пакет"
|
||||||
|
|
||||||
#: install.go:166 install.go:216
|
#: install.go:164 install.go:214
|
||||||
msgid "Unable to detect a supported package manager on the system"
|
msgid "Unable to detect a supported package manager on the system"
|
||||||
msgstr "Не удалось обнаружить поддерживаемый менеджер пакетов в системе"
|
msgstr "Не удалось обнаружить поддерживаемый менеджер пакетов в системе"
|
||||||
|
|
||||||
#: install.go:170
|
#: install.go:168
|
||||||
msgid "Error listing installed packages"
|
msgid "Error listing installed packages"
|
||||||
msgstr "Ошибка при составлении списка установленных пакетов"
|
msgstr "Ошибка при составлении списка установленных пакетов"
|
||||||
|
|
||||||
#: install.go:211
|
#: install.go:209
|
||||||
msgid "Command remove expected at least 1 argument, got %d"
|
msgid "Command remove expected at least 1 argument, got %d"
|
||||||
msgstr "Для команды remove ожидался хотя бы 1 аргумент, получено %d"
|
msgstr "Для команды remove ожидался хотя бы 1 аргумент, получено %d"
|
||||||
|
|
||||||
#: install.go:224
|
#: install.go:222
|
||||||
msgid "Error removing packages"
|
msgid "Error removing packages"
|
||||||
msgstr "Ошибка при удалении пакетов"
|
msgstr "Ошибка при удалении пакетов"
|
||||||
|
|
||||||
@ -208,6 +204,10 @@ msgstr "Ошибка при кодировании конфигурации"
|
|||||||
msgid "Error initialization database"
|
msgid "Error initialization database"
|
||||||
msgstr "Ошибка инициализации базы данных"
|
msgstr "Ошибка инициализации базы данных"
|
||||||
|
|
||||||
|
#: internal/cliutils/app_builder/builder.go:135
|
||||||
|
msgid "Error pulling repositories"
|
||||||
|
msgstr "Ошибка при извлечении репозиториев"
|
||||||
|
|
||||||
#: internal/cliutils/prompt.go:60
|
#: internal/cliutils/prompt.go:60
|
||||||
msgid "Would you like to view the build script for %s"
|
msgid "Would you like to view the build script for %s"
|
||||||
msgstr "Показать скрипт для пакета %s"
|
msgstr "Показать скрипт для пакета %s"
|
||||||
@ -326,16 +326,16 @@ msgstr "%s %s загружается — %s/с\n"
|
|||||||
msgid "ERROR"
|
msgid "ERROR"
|
||||||
msgstr "ОШИБКА"
|
msgstr "ОШИБКА"
|
||||||
|
|
||||||
#: internal/utils/cmd.go:79
|
#: internal/utils/cmd.go:83
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Error dropping capabilities"
|
msgid "Error dropping capabilities"
|
||||||
msgstr "Ошибка при открытии базы данных"
|
msgstr "Ошибка при открытии базы данных"
|
||||||
|
|
||||||
#: internal/utils/cmd.go:86
|
#: internal/utils/cmd.go:103
|
||||||
msgid "You need to be root to perform this action"
|
msgid "You need to be root to perform this action"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: internal/utils/cmd.go:128
|
#: internal/utils/cmd.go:145
|
||||||
msgid "You need to be a %s member to perform this action"
|
msgid "You need to be a %s member to perform this action"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -70,9 +70,13 @@ func DropCapsToAlrUser() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return EnuseIsAlrUser()
|
return EnsureIsAlrUser()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ExitIfCantDropCapsToAlrUser attempts to drop capabilities to the already
|
||||||
|
// running user. Returns a cli.ExitCoder with an error if the operation fails.
|
||||||
|
// See also [ExitIfCantDropCapsToAlrUserNoPrivs] for a version that also applies
|
||||||
|
// no-new-privs.
|
||||||
func ExitIfCantDropCapsToAlrUser() cli.ExitCoder {
|
func ExitIfCantDropCapsToAlrUser() cli.ExitCoder {
|
||||||
err := DropCapsToAlrUser()
|
err := DropCapsToAlrUser()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -81,6 +85,19 @@ func ExitIfCantDropCapsToAlrUser() cli.ExitCoder {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ExitIfCantDropCapsToAlrUserNoPrivs combines [ExitIfCantDropCapsToAlrUser] with [NoNewPrivs]
|
||||||
|
func ExitIfCantDropCapsToAlrUserNoPrivs() cli.ExitCoder {
|
||||||
|
if err := ExitIfCantDropCapsToAlrUser(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := NoNewPrivs(); err != nil {
|
||||||
|
return cliutils.FormatCliExit("error no new privs", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func ExitIfNotRoot() error {
|
func ExitIfNotRoot() error {
|
||||||
if os.Getuid() != 0 {
|
if os.Getuid() != 0 {
|
||||||
return cli.Exit(gotext.Get("You need to be root to perform this action"), 1)
|
return cli.Exit(gotext.Get("You need to be root to perform this action"), 1)
|
||||||
@ -88,7 +105,7 @@ func ExitIfNotRoot() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func EnuseIsAlrUser() error {
|
func EnsureIsAlrUser() error {
|
||||||
uid, gid, err := GetUidGidAlrUser()
|
uid, gid, err := GetUidGidAlrUser()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -20,20 +20,13 @@ import (
|
|||||||
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/manager"
|
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/manager"
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewInstaller(
|
func NewInstaller(mgr manager.Manager) *Installer {
|
||||||
repos PackageFinder,
|
|
||||||
mgr manager.Manager,
|
|
||||||
) *Installer {
|
|
||||||
return &Installer{
|
return &Installer{
|
||||||
repos: repos,
|
mgr: mgr,
|
||||||
mgr: mgr,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type Installer struct {
|
type Installer struct{ mgr manager.Manager }
|
||||||
repos PackageFinder
|
|
||||||
mgr manager.Manager
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Installer) InstallLocal(paths []string) error {
|
func (i *Installer) InstallLocal(paths []string) error {
|
||||||
return i.mgr.InstallLocal(nil, paths...)
|
return i.mgr.InstallLocal(nil, paths...)
|
||||||
|
@ -91,18 +91,19 @@ func GetSafeInstaller() (InstallerExecutor, func(), error) {
|
|||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
cmd := exec.Command(executable, "_internal-installer")
|
cmd := exec.Command(executable, "_internal-installer")
|
||||||
cmd.Env = append(os.Environ(),
|
cmd.Env = []string{
|
||||||
"HOME=/var/cache/alr",
|
"HOME=/var/cache/alr",
|
||||||
"LOGNAME=alr",
|
"LOGNAME=alr",
|
||||||
"USER=alr",
|
"USER=alr",
|
||||||
"PATH=/usr/bin:/bin:/usr/local/bin",
|
"PATH=/usr/bin:/bin:/usr/local/bin",
|
||||||
"ALR_LOG_LEVEL=DEBUG",
|
"ALR_LOG_LEVEL=DEBUG",
|
||||||
"XDG_SESSION_CLASS=user",
|
}
|
||||||
)
|
|
||||||
uid, gid, err := utils.GetUidGidAlrUser()
|
uid, gid, err := utils.GetUidGidAlrUser()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd.SysProcAttr = &syscall.SysProcAttr{
|
cmd.SysProcAttr = &syscall.SysProcAttr{
|
||||||
Credential: &syscall.Credential{
|
Credential: &syscall.Credential{
|
||||||
Uid: uint32(uid),
|
Uid: uint32(uid),
|
||||||
|
Loading…
Reference in New Issue
Block a user