Commit graph

46 commits

Author SHA1 Message Date
Joran Dirk Greef
0b87f36714 Make cross-platform stdout, stderr behavior consistent
Return stdout and stderr whenever these are available to assist with
debugging.

Specify 'utf-8' encoding to child_process.exec() as an explicit option
in case Node changes the default in future, and because we sometimes
return stdout and stderr via readFile(), which has a different default.

Fixes: #89
2019-06-03 17:12:19 +02:00
Joran Dirk Greef
71aced589a Fix Linux elevation magic marker comparison 2019-06-03 17:11:58 +02:00
Joran Dirk Greef
711dea9623 Polish macOS and Windows methods 2019-06-03 16:27:15 +02:00
Joran Dirk Greef
7e2db9e19e Improve Linux support to match macOS and Windows
Preserve current working directory.
Support explicit options.env environment variables.
Support multiple commands separated by semicolons.
Distinguish between elevation errors and command errors.

Fixes: #39
Fixes: #88
Fixes: #91
2019-06-03 16:22:41 +02:00
Joran Dirk Greef
dac09e3c7b Add options.env to set environment variables on macOS and Windows 2019-06-01 17:19:31 +02:00
Joran Dirk Greef
691c1d7eae Further improve kdesudo message to match macOS 2019-06-01 11:40:35 +02:00
Joran Dirk Greef
8d02007e4b Fix Windows to return PERMISSION_DENIED Error even when Windows' error
messages are internationalized.

Fixes: #96
2019-06-01 10:36:22 +02:00
Joran Dirk Greef
dc0c5f5494 Always return PERMISSION_DENIED as an Error 2019-06-01 10:36:11 +02:00
Joran Dirk Greef
0012c3a905 Remove empty WindowsWriteElevateScript() from control flow 2019-06-01 10:24:49 +02:00
Joran Dirk Greef
da118e99c3 Fix line lengths 2019-06-01 10:22:57 +02:00
Joran Dirk Greef
4da9ecb572 Improve kdesudo arguments to match macOS 2019-06-01 10:19:04 +02:00
Joran Dirk Greef
2ece63fdc1 Improve kdesudo message to match macOS 2019-06-01 10:19:04 +02:00
Joran Dirk Greef
5c743a9658 Revert "Add a fallback to which pkexec on Linux"
This reverts commit 0e933b77c3.
2018-12-12 10:27:28 +02:00
Joran Dirk Greef
0e933b77c3 Add a fallback to which pkexec on Linux
Fixes: https://github.com/jorangreef/sudo-prompt/issues/77
2018-12-10 18:38:50 +02:00
Joran Dirk Greef
8c1a3022f3 Run command idempotently when hostname cannot be resolved 2018-09-11 15:20:05 +02:00
Joran Dirk Greef
f677081dba Windows: Fix cd when cwd is on another drive 2018-03-22 08:48:58 +02:00
Joran Dirk Greef
0ba8cf0b27 Linux: Increase maxBuffer limit to 128 MiB 2018-01-10 15:26:24 +02:00
Joran Dirk Greef
6a0577a387 Breaking: Windows: Set code page of command batch script to UTF-8 2017-11-02 12:43:00 +02:00
Joran Dirk Greef
297b0d17a1 Detect when PowerShell fails to launch command 2017-06-20 10:04:09 +02:00
Joran Dirk Greef
a7338f638c Escape ampersand and other characters special to PowerShell 2017-06-20 10:03:07 +02:00
Joran Dirk Greef
810e87f9ba Add status code to error on Windows and macOS 2017-03-15 16:50:30 +02:00
Juan Cruz Viotti
1acf3d4a70 Yield an error if no polkit authentication agent was found
`pkexec` prints an error to `stderr` if no authentication agent was
found, and if we pass the `--disable-internal-agent` option.

Currently, this module doesn't handle this edge case by yielding a
meaningful error, and therefore causes client applications to usually
miss it.

Fixes: https://github.com/jorangreef/sudo-prompt/issues/28
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-08-02 10:22:48 -04:00
Joran Dirk Greef
a57487d444 Add support for Windows 2016-07-15 17:13:03 +02:00
Joran Dirk Greef
3a0aef7b53 Prefer kdesudo to pkexec for a better prompt 2016-06-30 18:19:21 +02:00
Juan Cruz Viotti
17f45ebef3 Pass the --comment option to kdesudo to improve dialog
Otherwise, `kdesudo` also displays the command as the dialog title,
making it very ugly and unfriendly.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-28 17:16:27 -04:00
Juan Cruz Viotti
37996169ed Don't keep parsing command options in sudo
This commit is very similar to 3f6c485. It implements the fix to the
same problem for `sudo` when the module makes an attempt to determine if
the dialog needs to be shown or not.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-07 12:37:43 -04:00
Joran Dirk Greef
1e11485bf4 Remove support for gksudo (gksudo breaks when used concurrently) 2016-06-04 13:17:14 +02:00
Juan Cruz Viotti
3f6c485c4d Don't keep parsing command options in gksudo/kdesudo
When `gksudo` is detected, this module executes the following command:

```
"/usr/bin/gksudo" --preserve-env --sudo-mode --description="MyApp" <COMMAND>
```

Consider the following command:

```
/home/jviotti/Projects/etcher/node_modules/electron-prebuilt/dist/electron /home/jviotti/Projects/etcher/lib/src/run-child-writer.js lib/start.js /home/jviotti/Downloads/CorePlus-current.iso --robot --drive /dev/sdb --unmount --check
```

Given that the command I'm running contains option arguments, it seems
like `gksudo` tries to interpret the options to my command as `gksudo`
options, failing with errors like this one:

```
/usr/bin/gksudo: unrecognized option '--robot'
```

To prevent this from happening, we can tell `gksudo` to stop parsing
options with the `--` identifier.

The same error happens with `kdesudo`.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-20 13:15:38 -04:00
Joran Dirk Greef
e428e0b50a Merge branch 'master' of https://github.com/jorangreef/sudo-prompt 2016-05-18 12:52:04 +02:00
Joran Dirk Greef
bd6c099453 Fix applet path to handle spaces 2016-05-18 12:51:54 +02:00
Juan Cruz Viotti
4a5baf5716 Preserve user environment
Some child processes executed with this module might benefit from being
able to read their parent process environment variables.

Fixes: https://github.com/jorangreef/sudo-prompt/issues/20
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-05-17 13:13:37 -04:00
Joran Dirk Greef
4a118a0c9c Preserve current working directory on OS X
This improves reliability for commands which expect the current working
directory to be preserved. This may not always be the case on Linux as yet.
2016-04-16 12:29:30 +02:00
Joran Dirk Greef
0b5c7d7361 Add support for tty_tickets on OS X (and major breaking changes).
Add support for `tty_tickets` on OS X.
Ensure all line lengths are less than 80 characters.
Fix shell commands to use absolute path (e.g. `/bin/rm`, `/usr/bin/defaults`).
Fix `options.icns` to work with asar packages.
Fix internal method names to reduce chance of a clash with local variables.
Remove `options.onChildProcess()` (no longer possible to support).
Remove batching of password prompts on OS X.
Remove deprecated `setName()`.
Remove deprecated `touch()`.

Fixes: https://github.com/jorangreef/sudo-prompt/issues/13
2016-04-15 13:11:23 +02:00
Joran Dirk Greef
fe26a8a159 Package applet.app as a base64 zip file within index.js to fix issue with asar files 2016-02-09 09:30:04 +02:00
Joran Dirk Greef
d08ec680f3 Remove dependency on locale language when detecting sudo error 2016-01-01 15:51:58 +02:00
Joran Dirk Greef
f91a0a9b16 Add options.onChildProcess 2015-11-26 12:11:57 +02:00
Joran Dirk Greef
52f07e3526 Update README.md 2015-11-17 15:57:33 +02:00
Joran Dirk Greef
9bc245180a Fix macPrompt to remove hash directory in tmp 2015-11-17 15:54:56 +02:00
Joran Dirk Greef
57a83efd64 Add exec options (support options.icns on OS X), add beta Linux support, improve concurrency 2015-11-17 15:40:53 +02:00
Juan Cruz Viotti
344da8f7b2 Make sure to use the system sudo command
Some modules, like `windosu` expose a binary called `sudo`. By just
calling `sudo`, `sudo-prompt` might accidentally call a `sudo` command
which is not the system one, causing tons of confusions.

Fixes: https://github.com/jorangreef/sudo-prompt/issues/6
2015-10-29 14:56:09 -04:00
Joran Dirk Greef
f07b3679c2 Ensure all errors are an instance of Error to capture the stack 2015-09-07 09:10:39 +02:00
Joran Dirk Greef
2a6642b079 Comment sudo.touch implementation 2015-09-07 08:52:26 +02:00
Joran Dirk Greef
1698b73841 Fix early error check skipping password prompt 2015-09-07 08:51:03 +02:00
Joran Dirk Greef
b3027711ca Clarify implementation of sudo.touch 2015-08-05 09:18:34 +02:00
Joran Dirk Greef
36b303799e Fix setName 2015-06-08 16:29:05 +02:00
Joran Dirk Greef
dcb02caa3c Add code 2015-06-08 15:24:56 +02:00