mirror of
https://git.coolaj86.com/coolaj86/telebit.js.git
synced 2025-04-21 11:40:36 +00:00
Compare commits
18 Commits
Author | SHA1 | Date | |
---|---|---|---|
f0049c7f06 | |||
b5d57817cf | |||
1e3f7f671d | |||
00f3b3ab45 | |||
|
19a42a596c | ||
|
de2290dd3e | ||
|
7db8a7a4ae | ||
ceddf444b0 | |||
76ec7eb066 | |||
|
05dab9a52c | ||
20321b2fbe | |||
8bf4bfc7c0 | |||
4f0db8bc9c | |||
52d344c6e9 | |||
8ffc30797a | |||
909b479265 | |||
8589a66fca | |||
461166d3e3 |
@ -1,8 +1,7 @@
|
||||
# Telebit™ Remote
|
||||
# Telebit™ Remote | a [Root](https://rootprojects.org) project
|
||||
|
||||
Because friends don't let friends localhost™
|
||||
|
||||
| Sponsored by [ppl](https://ppl.family)
|
||||
| **Telebit Remote**
|
||||
| [Telebit Relay](https://git.coolaj86.com/coolaj86/telebit-relay.js)
|
||||
| [sclient](https://telebit.cloud/sclient)
|
||||
@ -121,8 +120,8 @@ Windows & Node.js
|
||||
1. Install [node.js](https://nodejs.org)
|
||||
2. Open _Node.js_
|
||||
2. Run the command `npm install -g telebit`
|
||||
2. Copy the example daemon conifg to your user folder `.config/telebit/telebitd.yml` (such as `/Users/John/.config/telebit/telebitd.yml`)
|
||||
2. Copy the example remote conifg to your user folder `.config/telebit/telebit.yml` (such as `/Users/John/.config/telebit/telebit.yml`)
|
||||
2. Copy the example daemon config to your user folder `.config/telebit/telebitd.yml` (such as `/Users/John/.config/telebit/telebitd.yml`)
|
||||
2. Copy the example remote config to your user folder `.config/telebit/telebit.yml` (such as `/Users/John/.config/telebit/telebit.yml`)
|
||||
2. Change the email address
|
||||
2. Run `npx telebit init` and follow the instructions
|
||||
2. Run `npx telebit list`
|
||||
|
@ -98,16 +98,7 @@ function askForConfig(state, mainCb) {
|
||||
var firstSet = [
|
||||
function askEmail(cb) {
|
||||
if (state.config.email) { cb(); return; }
|
||||
//console.info("");
|
||||
console.info("Welcome!");
|
||||
console.info("");
|
||||
console.info("By using Telebit you agree to:");
|
||||
console.info("");
|
||||
console.info(" [x] Accept the Telebit™ terms of service");
|
||||
console.info(" [x] Accept the Let's Encrypt™ terms of service");
|
||||
console.info("");
|
||||
console.info("Enter your email to agree and login/create your account:");
|
||||
console.info("");
|
||||
console.info(TPLS.remote.setup.email);
|
||||
// TODO attempt to read email from npmrc or the like?
|
||||
rl.question('email: ', function (email) {
|
||||
email = /@/.test(email) && email.trim();
|
||||
@ -548,7 +539,7 @@ function getToken(err, state) {
|
||||
console.error(err);
|
||||
return;
|
||||
}
|
||||
console.info("waiting...");
|
||||
console.info(TPLS.remote.waiting.replace(/{email}/, state.config.email));
|
||||
next();
|
||||
});
|
||||
}
|
||||
@ -583,18 +574,12 @@ function getToken(err, state) {
|
||||
, end: function () {
|
||||
utils.putConfig('enable', [], function (err) {
|
||||
if (err) { console.error(err); return; }
|
||||
console.info("Success");
|
||||
console.info(TPLS.remote.success);
|
||||
|
||||
// workaround for https://github.com/nodejs/node/issues/21319
|
||||
if (state._useTty) {
|
||||
setTimeout(function () {
|
||||
console.info("Some fun things to try first:\n");
|
||||
console.info(" ~/telebit http ~/public");
|
||||
console.info(" ~/telebit tcp 5050");
|
||||
console.info(" ~/telebit ssh auto");
|
||||
console.info();
|
||||
console.info("Press any key to continue...");
|
||||
console.info();
|
||||
console.info(TPLS.remote.next_steps);
|
||||
process.exit(0);
|
||||
}, 0.5 * 1000);
|
||||
return;
|
||||
|
0
bin/telebit.js
Normal file → Executable file
0
bin/telebit.js
Normal file → Executable file
@ -6,7 +6,7 @@ Telebit Remote is the T-Rex long-arm of the Internet. UNSTOPPABLE!
|
||||
|
||||
Using reliable HTTPS tunneling to establishing peer-to-peer connections,
|
||||
Telebit is empowering the next generation of tinkerers. Access your devices.
|
||||
Share your stuff. Be UNSTOPPABLE! (Join us at https://ppl.family)
|
||||
Share your stuff. Be UNSTOPPABLE! (Join us at https://rootprojects.org)
|
||||
|
||||
Usage:
|
||||
|
||||
@ -59,7 +59,7 @@ Use \"telebit help [command]\" for more information about a command, including f
|
||||
|
||||
Copyright 2015-2018 AJ ONeal https://telebit.cloud MPL-2.0 Licensed (RAWR!)"
|
||||
|
||||
status = "usage: telebit status <path/port/none> [subdomain]
|
||||
status = "usage: telebit status
|
||||
|
||||
'telebit status' shows details about the current connections (or lack thereof).
|
||||
|
||||
@ -135,7 +135,7 @@ usage: telebit http <path/port/none> [subdomain]
|
||||
|
||||
Use cases:
|
||||
|
||||
- Lazy man's AirDrop (works or lazy women too!)
|
||||
- Lazy man's AirDrop (works for lazy women too!)
|
||||
- Testing dev sites on a phone
|
||||
- Sharing indie music and movies with friends"
|
||||
|
||||
@ -145,7 +145,7 @@ usage: telebit ssh <auto|port|none>
|
||||
|
||||
All https traffic will be inspected to see if it looks like ssh Once enabled all traffic that looks
|
||||
|
||||
ssh auto Make ssh Just Works™ (on port 22)
|
||||
ssh auto Make ssh Just Work™ (on port 22)
|
||||
|
||||
ssh <port> forward ssh traffic to non-standard port
|
||||
ex: telebit ssh 22 ex: explicitly forward ssh-looking packets to localhost:22
|
||||
@ -452,5 +452,42 @@ The secret flags are:
|
||||
[remote]
|
||||
version = "telebit remote v{version}"
|
||||
|
||||
code = "
|
||||
==============================================
|
||||
Hey, Listen!
|
||||
==============================================
|
||||
|
||||
GO CHECK YOUR EMAIL!
|
||||
|
||||
DEVICE PAIR CODE: 0000
|
||||
|
||||
==============================================
|
||||
"
|
||||
|
||||
waiting = "waiting for you to check your email..."
|
||||
|
||||
success = "Success"
|
||||
|
||||
next_steps = "Some fun things to try first:
|
||||
|
||||
~/telebit http ~/Public
|
||||
~/telebit tcp 5050
|
||||
~/telebit ssh auto
|
||||
|
||||
Press any key to continue...
|
||||
"
|
||||
|
||||
[remote.setup]
|
||||
|
||||
email = "Welcome!
|
||||
|
||||
By using Telebit you agree to:
|
||||
|
||||
[x] Accept the Telebit™ terms of service
|
||||
[x] Accept the Let's Encrypt™ terms of service
|
||||
|
||||
Enter your email to agree and login/create your account:
|
||||
"
|
||||
|
||||
[daemon]
|
||||
version = "telebit daemon v{version}"
|
||||
|
@ -51,18 +51,24 @@
|
||||
|
||||
<div>
|
||||
<h2>You've claimed <span class="js-servername">{{servername}}</span></h2>
|
||||
<p>Here's some ways you can use it:</p>
|
||||
<p>Here are some ways you can use Telebit via Terminal or other Command Line Interface:</p>
|
||||
<div class="code-block">
|
||||
<pre><code>telebit http ~/Public # serve a public folder
|
||||
telebit http 3000 # forward all https traffic to localhost:3000
|
||||
telebit http none # remove all https handlers</code></pre>
|
||||
<br />
|
||||
<pre><code>~/telebit ssh auto # allows you to connect to your computer with <br /> ssh-over-https from a different computer</span></code></pre>
|
||||
<pre><code>~/telebit http ~/Public # serve a public folder
|
||||
~/telebit http 3000 # forward all https traffic to localhost:3000
|
||||
~/telebit http none # remove all https handlers</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
<p>You can <em>always</em> tunnel <strong>SSH over HTTPS</strong>,
|
||||
<p>And remember you can <em>always</em> tunnel <strong>SSH over HTTPS</strong>,
|
||||
even while you're using it for something else:</p>
|
||||
<div class="code-block"><pre><code>telebit ssh auto</code></pre>
|
||||
<p> </p>
|
||||
|
||||
<details>
|
||||
<p><summary><strong>Here are some examples for those of you that want to access files and folders remotely. </strong></summary></p>
|
||||
<p><strong>This function allows you to connect one computer to another computer you also have SSH on.</strong></p>
|
||||
<div class="code-block"><pre><code>~/telebit ssh <span class="js-servername">{{servername}}</span></code></pre>
|
||||
<br>
|
||||
<pre><code>telebit ssh <span class="js-servername">{{servername}}</span></code></pre>
|
||||
- or -
|
||||
<pre><code>ssh -o ProxyCommand='<a href="https://telebit.cloud/sclient">sclient</a> %h' <span class="js-servername">{{servername}}</span></code></pre>
|
||||
- or -
|
||||
@ -70,8 +76,7 @@ telebit http none # remove all https handlers</code></pre>
|
||||
ssh -o ProxyCommand="$proxy_cmd" <span class="js-servername">{{servername}}</span></code></pre>
|
||||
</div>
|
||||
<pre><code>ssh -o ProxyCommand='openssl s_client -connect %h:443 -servername %h -quiet' <span class="js-servername">{{servername}}</span></code></pre>
|
||||
|
||||
|
||||
</details>
|
||||
<!--div class="js-port" hidden>
|
||||
<h2>You've claimed port <span class="js-serviceport">{{serviceport}}</span></h2>
|
||||
<p>Here's some ways you can use it:</p>
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
document.body.hidden = false;
|
||||
|
||||
var hash = window.location.hash.substr(1);
|
||||
var hash = window.location.hash.replace(/^[\/#?]+/, '');
|
||||
var query = window.location.search;
|
||||
|
||||
function parseQuery(search) {
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "telebit",
|
||||
"version": "0.20.6",
|
||||
"version": "0.20.8",
|
||||
"description": "Break out of localhost. Connect to any device from anywhere over any tcp port or securely in a browser. A secure tunnel. A poor man's reverse VPN.",
|
||||
"main": "lib/remote.js",
|
||||
"files": [
|
||||
|
@ -114,8 +114,8 @@ Launcher.install = function (things, fn) {
|
||||
};
|
||||
vars.telebitBinTpl = path.join(telebitRoot, 'usr/share/dist/bin/telebit.tpl');
|
||||
vars.telebitNpm = path.resolve(vars.telebitNode, '../npm');
|
||||
vars.nodePath = path.resolve(vars.telebitNode, '../lib/node_modules');
|
||||
vars.npmConfigPrefix = path.resolve(vars.telebitNode, '..');
|
||||
vars.nodePath = path.resolve(vars.telebitNode, '../../lib/node_modules');
|
||||
vars.npmConfigPrefix = path.resolve(vars.telebitNode, '..', '..');
|
||||
vars.userspace = (!things.telebitUser || (things.telebitUser === os.userInfo().username)) ? true : false;
|
||||
if (-1 === vars.telebitRwDirs.indexOf(vars.npmConfigPrefix)) {
|
||||
vars.telebitRwDirs.push(vars.npmConfigPrefix);
|
||||
|
@ -133,8 +133,11 @@ my_tmp="$(mktemp -d -t telebit.XXXXXXXX)"
|
||||
#TELEBIT_TMP="$my_tmp/telebit"
|
||||
|
||||
echo "Installing $my_name to '$TELEBIT_REAL_PATH'"
|
||||
# v10.2+ has much needed networking fixes, but breaks ursa. v9.x has severe networking bugs. v8.x has working ursa, but requires tls workarounds"
|
||||
NODEJS_VER="${NODEJS_VER:-v10.6}"
|
||||
# v10.2+ has much needed networking fixes, but breaks ursa.
|
||||
# v9.x has severe networking bugs.
|
||||
# v8.x has working ursa, but requires tls workarounds"
|
||||
# v10.13 seems to work for me locally (new greenlock)
|
||||
NODEJS_VER="${NODEJS_VER:-v10.13}"
|
||||
export NODEJS_VER
|
||||
export NODE_PATH="$TELEBIT_TMP/lib/node_modules"
|
||||
export NPM_CONFIG_PREFIX="$TELEBIT_TMP"
|
||||
@ -224,16 +227,20 @@ pushd $TELEBIT_TMP >/dev/null
|
||||
else
|
||||
echo -n "."
|
||||
fi
|
||||
set +e
|
||||
$tmp_npm install >/dev/null 2>/dev/null &
|
||||
# ursa is now an entirely optional dependency for key generation
|
||||
# but very much needed on ARM devices
|
||||
$tmp_npm install ursa >/dev/null 2>/dev/null &
|
||||
tmp_npm_pid=$!
|
||||
while [ -n "$tmp_npm_pid" ]; do
|
||||
sleep 2
|
||||
echo -n "."
|
||||
kill -s 0 $tmp_npm_pid >/dev/null 2>/dev/null || tmp_npm_pid=""
|
||||
done
|
||||
set -e
|
||||
echo -n "."
|
||||
$tmp_npm install >/dev/null 2>/dev/null
|
||||
# ursa is now an entirely optional dependency for key generation
|
||||
# but very much needed on ARM devices
|
||||
$tmp_npm install ursa >/dev/null 2>/dev/null || true
|
||||
popd >/dev/null
|
||||
|
||||
if [ -n "${TELEBIT_DEBUG}" ]; then
|
||||
@ -425,8 +432,8 @@ if [ -d "/Library/LaunchDaemons" ]; then
|
||||
|
||||
if [ -n "${TELEBIT_DEBUG}" ]; then
|
||||
echo " > launchctl unload -w $my_app_launchd_service >/dev/null 2>/dev/null"
|
||||
launchctl unload -w "$my_app_launchd_service" >/dev/null 2>/dev/null
|
||||
fi
|
||||
launchctl unload -w "$my_app_launchd_service" >/dev/null 2>/dev/null
|
||||
else
|
||||
my_app_launchd_service_skel="usr/share/dist/Library/LaunchDaemons/${my_app_pkg_name}.plist"
|
||||
my_app_launchd_service="$my_root/Library/LaunchDaemons/${my_app_pkg_name}.plist"
|
||||
@ -489,23 +496,30 @@ elif [ "systemd" == "$my_system_launcher" ]; then
|
||||
else
|
||||
echo -n "."
|
||||
fi
|
||||
systemctl --user daemon-reload
|
||||
# enable also puts success output to stderr... why?
|
||||
systemctl --user enable $my_app >/dev/null 2>/dev/null
|
||||
#echo " > systemctl --user enable systemd-tmpfiles-setup.service systemd-tmpfiles-clean.timer"
|
||||
#systemctl --user enable systemd-tmpfiles-setup.service systemd-tmpfiles-clean.timer
|
||||
if [ -n "${TELEBIT_DEBUG}" ]; then
|
||||
echo " > systemctl --user start $my_app"
|
||||
fi
|
||||
systemctl --user stop $my_app >/dev/null 2>/dev/null
|
||||
systemctl --user start $my_app >/dev/null
|
||||
sleep 2; # give it time to start
|
||||
_is_running=$(systemctl --user status --no-pager $my_app 2>/dev/null | grep "active.*running")
|
||||
if [ -z "$_is_running" ]; then
|
||||
echo "Something went wrong:"
|
||||
systemctl --user status --no-pager $my_app
|
||||
exit 1
|
||||
set +e
|
||||
if systemctl --user daemon-reload; then
|
||||
# enable also puts success output to stderr... why?
|
||||
systemctl --user enable $my_app >/dev/null 2>/dev/null
|
||||
#echo " > systemctl --user enable systemd-tmpfiles-setup.service systemd-tmpfiles-clean.timer"
|
||||
#systemctl --user enable systemd-tmpfiles-setup.service systemd-tmpfiles-clean.timer
|
||||
if [ -n "${TELEBIT_DEBUG}" ]; then
|
||||
echo " > systemctl --user start $my_app"
|
||||
fi
|
||||
systemctl --user stop $my_app >/dev/null 2>/dev/null
|
||||
systemctl --user start $my_app >/dev/null
|
||||
|
||||
sleep 2; # give it time to start
|
||||
_is_running=$(systemctl --user status --no-pager $my_app 2>/dev/null | grep "active.*running")
|
||||
if [ -z "$_is_running" ]; then
|
||||
echo "Something went wrong:"
|
||||
systemctl --user status --no-pager $my_app
|
||||
fi
|
||||
else
|
||||
echo "libpam-systemd is missing, which is required on Linux to register Telebit with the user launcher."
|
||||
echo "sudo apt-get install -y libpam-systemd"
|
||||
sudo apt-get install -y libpam-systemd
|
||||
fi
|
||||
set -e
|
||||
echo -n "."
|
||||
else
|
||||
|
||||
|
@ -79,8 +79,8 @@ function run() {
|
||||
, TELEBIT_LOG_DIR: process.env.TELEBIT_LOG_DIR || path.join(os.homedir(), '.local/share/telebit/var/log')
|
||||
};
|
||||
vars.telebitNpm = process.env.TELEBIT_NPM || path.resolve(vars.telebitNode, '../npm');
|
||||
vars.nodePath = process.env.NODE_PATH || path.resolve(vars.telebitNode, '../lib/node_modules');
|
||||
vars.npmConfigPrefix = process.env.NPM_CONFIG_PREFIX || path.resolve(vars.telebitNode, '..');
|
||||
vars.nodePath = process.env.NODE_PATH || path.resolve(vars.telebitNode, '../../lib/node_modules');
|
||||
vars.npmConfigPrefix = process.env.NPM_CONFIG_PREFIX || path.resolve(vars.telebitNode, '..', '..');
|
||||
if (-1 === vars.telebitRwDirs.indexOf(vars.npmConfigPrefix)) {
|
||||
vars.telebitRwDirs.push(vars.npmConfigPrefix);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user