diff --git a/src/cli.ts b/src/cli.ts index 741170b..8129724 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -252,6 +252,7 @@ export const buildCmd = (): Command => { .option("-n, --name ", "Location name") .option("-u, --username ", "Proxy user") .option("-p, --password ", "Proxy password") + .option("-l, --host-network", "Use host network (default: false). If set you can use localhost directly", false) .action(startPrivateLocationWorker); program.command("stop-private-location") diff --git a/src/plw/index.ts b/src/plw/index.ts index dcbd2dd..7337dc3 100644 --- a/src/plw/index.ts +++ b/src/plw/index.ts @@ -79,8 +79,9 @@ const createDockerCommand = (options: { name?: string; username?: string; password?: string; + hostNetwork?: boolean; }): string => { - return `docker run --rm --name PLW -e PLW_NAME=${options.name} -e PROXY_USER=${options.username} -e PROXY_PASS=${options.password} -e APIKEY=${options.apiKey} eu.gcr.io/octomind-dev/plw:latest`; + return `docker run --rm --name PLW ${options.hostNetwork ? "--network host" : ""} -e PLW_NAME=${options.name} -e PROXY_USER=${options.username} -e PROXY_PASS=${options.password} -e APIKEY=${options.apiKey} eu.gcr.io/octomind-dev/plw:latest`; }; export const startPrivateLocationWorker = async (options: { @@ -88,6 +89,7 @@ export const startPrivateLocationWorker = async (options: { username?: string; password?: string; apikey: string; + hostNetwork?: boolean; }) => { const name = options.name || "default-plw"; const username = options.username || randomUUID().replace(/-/g, ""); @@ -99,7 +101,13 @@ export const startPrivateLocationWorker = async (options: { "API key is required. Please configure it first by running 'octomind init'", ); } - const command = createDockerCommand({ name, username, password, apiKey }); + const command = createDockerCommand({ + name, + username, + password, + apiKey, + hostNetwork: options.hostNetwork, + }); if (!(await checkDockerDaemon())) { console.error( @@ -108,7 +116,9 @@ export const startPrivateLocationWorker = async (options: { return; } - console.log(`executing command : '${command}'`); + console.log( + `executing command : '${command.replace(/APIKEY=[^\s&]*/g, "APIKEY=***")}'`, + ); const args = command.split(" "); const result = await spawnAndStreamLines(args[0], args.slice(1), 10); console.log(`Captured ${result.lines.length} lines`);