mirror of
https://github.com/Yubico/yubioath-flutter.git
synced 2024-12-22 17:51:29 +03:00
Rename RPC to Yubico Authenticator Helper.
This commit is contained in:
parent
ce78d7a25a
commit
3dc699c391
10
build-helper.bat
Normal file
10
build-helper.bat
Normal file
@ -0,0 +1,10 @@
|
||||
@echo off
|
||||
|
||||
echo Building authenticator-helper for Windows...
|
||||
cd helper
|
||||
poetry install
|
||||
rmdir /s /q ..\build\windows\helper
|
||||
poetry run pyinstaller authenticator-helper.spec --distpath ..\build\windows
|
||||
cd ..
|
||||
|
||||
echo All done, output in build/windows/
|
@ -15,22 +15,22 @@ case "$(uname)" in
|
||||
OS="windows";;
|
||||
esac
|
||||
|
||||
echo "Building ykman-rpc for $OS..."
|
||||
echo "Building authenticator-helper for $OS..."
|
||||
OUTPUT="build/$OS"
|
||||
|
||||
cd ykman-rpc
|
||||
cd helper
|
||||
poetry install
|
||||
rm -rf ../$OUTPUT/ykman-rpc
|
||||
poetry run pyinstaller ykman-rpc.spec --distpath ../$OUTPUT
|
||||
rm -rf ../$OUTPUT/helper
|
||||
poetry run pyinstaller authenticator-helper.spec --distpath ../$OUTPUT
|
||||
cd ..
|
||||
|
||||
# Fixup permissions (should probably be more strict)
|
||||
find $OUTPUT/ykman-rpc -type f -exec chmod a-x {} +
|
||||
chmod a+x $OUTPUT/ykman-rpc/ykman-rpc
|
||||
find $OUTPUT/helper -type f -exec chmod a-x {} +
|
||||
chmod a+x $OUTPUT/helper/authenticator-helper
|
||||
|
||||
# Adhoc sign executable (MacOS)
|
||||
if [ "$OS" = "macos" ]; then
|
||||
codesign -f --timestamp --entitlements macos/ykman.entitlements --sign - $OUTPUT/ykman-rpc/ykman-rpc
|
||||
codesign -f --timestamp --entitlements macos/helper.entitlements --sign - $OUTPUT/helper/authenticator-helper
|
||||
fi
|
||||
|
||||
echo "All done, output in $OUTPUT/"
|
@ -1,10 +0,0 @@
|
||||
@echo off
|
||||
|
||||
echo Building ykman-rpc for Windows...
|
||||
cd ykman-rpc
|
||||
poetry install
|
||||
rmdir /s /q ..\build\windows\ykman-rpc
|
||||
poetry run pyinstaller ykman-rpc.spec --distpath ..\build\windows
|
||||
cd ..
|
||||
|
||||
echo All done, output in build/windows/
|
@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
from rpc import run_rpc_pipes, run_rpc_socket
|
||||
from helper import run_rpc_pipes, run_rpc_socket
|
||||
|
||||
import socket
|
||||
import sys
|
@ -5,7 +5,7 @@ block_cipher = None
|
||||
|
||||
|
||||
a = Analysis(
|
||||
["ykman-rpc.py"],
|
||||
["authenticator-helper.py"],
|
||||
pathex=[],
|
||||
binaries=[],
|
||||
datas=[],
|
||||
@ -26,14 +26,14 @@ exe = EXE(
|
||||
a.scripts,
|
||||
[],
|
||||
exclude_binaries=True,
|
||||
name="ykman-rpc",
|
||||
name="authenticator-helper",
|
||||
icon="NONE",
|
||||
debug=False,
|
||||
bootloader_ignore_signals=False,
|
||||
strip=False,
|
||||
upx=True,
|
||||
console=True,
|
||||
manifest="ykman-rpc.exe.manifest",
|
||||
manifest="authenticator-helper.exe.manifest",
|
||||
version="version_info.txt",
|
||||
disable_windowed_traceback=False,
|
||||
target_arch=None,
|
||||
@ -48,5 +48,5 @@ coll = COLLECT(
|
||||
strip=False,
|
||||
upx=True,
|
||||
upx_exclude=[],
|
||||
name="ykman-rpc",
|
||||
name="helper",
|
||||
)
|
0
ykman-rpc/poetry.lock → helper/poetry.lock
generated
0
ykman-rpc/poetry.lock → helper/poetry.lock
generated
@ -1,7 +1,7 @@
|
||||
[tool.poetry]
|
||||
name = "ykman-rpc"
|
||||
name = "authenticator-helper"
|
||||
version = "0.1.0"
|
||||
description = "Yubico Authenticator helper app"
|
||||
description = "Yubico Authenticator Helper"
|
||||
authors = ["Dain Nilsson <dain@yubico.com>"]
|
||||
|
||||
[tool.poetry.dependencies]
|
@ -228,22 +228,22 @@ def log_stderr(stderr):
|
||||
@click.command()
|
||||
@click.argument("executable", nargs=-1)
|
||||
def shell(executable):
|
||||
"""A basic shell for interacting with the ykman rpc."""
|
||||
rpc = subprocess.Popen( # nosec
|
||||
executable or [sys.executable, "ykman-rpc.py"],
|
||||
"""A basic shell for interacting with the Yubico Authenticator Helper."""
|
||||
helper = subprocess.Popen( # nosec
|
||||
executable or [sys.executable, "authenticator-helper.py"],
|
||||
stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
encoding="utf8",
|
||||
)
|
||||
|
||||
Thread(daemon=True, target=log_stderr, args=(rpc.stderr,)).start()
|
||||
Thread(daemon=True, target=log_stderr, args=(helper.stderr,)).start()
|
||||
|
||||
click.echo("Shell starting...")
|
||||
shell = RpcShell(rpc.stdin, cast(IO[str], rpc.stdout))
|
||||
shell = RpcShell(helper.stdin, cast(IO[str], helper.stdout))
|
||||
shell.cmdloop()
|
||||
click.echo("Stopping...")
|
||||
rpc.communicate()
|
||||
helper.communicate()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
@ -59,10 +59,10 @@ Future<Widget> initialize(List<String> argv) async {
|
||||
}
|
||||
}));
|
||||
|
||||
// Either use the _YKMAN_EXE environment variable, or look relative to executable.
|
||||
var exe = Platform.environment['_YKMAN_PATH'];
|
||||
// Either use the _HELPER_PATH environment variable, or look relative to executable.
|
||||
var exe = Platform.environment['_HELPER_PATH'];
|
||||
if (exe?.isEmpty ?? true) {
|
||||
var relativePath = 'ykman-rpc/ykman-rpc';
|
||||
var relativePath = 'helper/authenticator-helper';
|
||||
if (Platform.isMacOS) {
|
||||
relativePath = '../Resources/' + relativePath;
|
||||
} else if (Platform.isWindows) {
|
||||
@ -73,10 +73,10 @@ Future<Widget> initialize(List<String> argv) async {
|
||||
.toFilePath();
|
||||
}
|
||||
|
||||
_log.info('Starting subprocess: $exe');
|
||||
_log.info('Starting Helper subprocess: $exe');
|
||||
final rpc = RpcSession(exe!);
|
||||
await rpc.initialize();
|
||||
_log.info('ykman-rpc process started', exe);
|
||||
_log.info('Helper process started', exe);
|
||||
rpc.setLogLevel(Logger.root.level);
|
||||
|
||||
return ProviderScope(
|
||||
|
@ -10,7 +10,7 @@ import 'package:yubico_authenticator/app/logging.dart';
|
||||
import '../app/models.dart';
|
||||
import 'models.dart';
|
||||
|
||||
final _log = Logger('rpc');
|
||||
final _log = Logger('helper');
|
||||
|
||||
class Signaler {
|
||||
final _send = StreamController<String>();
|
||||
@ -92,7 +92,7 @@ class RpcSession {
|
||||
static void _logEntry(String entry) {
|
||||
try {
|
||||
final record = jsonDecode(entry);
|
||||
Logger('rpc.${record['name']}').log(
|
||||
Logger('helper.${record['name']}').log(
|
||||
_py2level[record['level']] ?? Level.INFO,
|
||||
record['message'],
|
||||
record['exc_text'],
|
||||
@ -105,7 +105,7 @@ class RpcSession {
|
||||
|
||||
Future<void> initialize() async {
|
||||
final process = await Process.start(executable, []);
|
||||
_log.debug('RPC process started');
|
||||
_log.debug('Helper process started');
|
||||
process.stderr
|
||||
.transform(const Utf8Decoder())
|
||||
.transform(const LineSplitter())
|
||||
@ -133,7 +133,7 @@ class RpcSession {
|
||||
// Bind to random port
|
||||
final server = await ServerSocket.bind(InternetAddress.loopbackIPv4, 0);
|
||||
final port = server.port;
|
||||
_log.debug('Listening for RPC connection on $port');
|
||||
_log.debug('Listening for Helper connection on $port');
|
||||
|
||||
// Launch the elevated process
|
||||
final process =
|
||||
@ -150,15 +150,15 @@ class RpcSession {
|
||||
.transform(const Utf8Decoder())
|
||||
.transform(const LineSplitter())
|
||||
.join('\n');
|
||||
_log.warning('Failed to elevate RPC process', error);
|
||||
_log.warning('Failed to elevate the Helper process', error);
|
||||
return false;
|
||||
}
|
||||
_log.debug('Elevated RPC process started');
|
||||
_log.debug('Elevated Helper process started');
|
||||
|
||||
// Accept only a single connection
|
||||
final client = await server.first;
|
||||
await server.close();
|
||||
_log.debug('Client connected: $client');
|
||||
_log.debug('Helper connected: $client');
|
||||
|
||||
// Stop the old subprocess.
|
||||
try {
|
||||
@ -174,12 +174,12 @@ class RpcSession {
|
||||
// The nonce needs to be received first.
|
||||
if (!authenticated) {
|
||||
if (nonce == line) {
|
||||
_log.debug('Client authenticated with correct nonce');
|
||||
_log.debug('Helper authenticated with correct nonce');
|
||||
authenticated = true;
|
||||
completer.complete();
|
||||
return '';
|
||||
} else {
|
||||
_log.warning('Client used WRONG NONCE: $line');
|
||||
_log.warning('Helper used WRONG NONCE: $line');
|
||||
client.close();
|
||||
completer.completeError(Exception('Invalid nonce'));
|
||||
throw Exception('Invalid nonce');
|
||||
|
Loading…
Reference in New Issue
Block a user