termux-connecting 1.1.13 → 1.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/termux-connect-pc +171 -54
- package/bin/termux-connecting +3 -3
- package/package.json +1 -1
package/bin/termux-connect-pc
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
set -e
|
|
3
3
|
|
|
4
|
-
VERSION="1.1.
|
|
4
|
+
VERSION="1.1.12"
|
|
5
5
|
CONFIG_DIR="$HOME/.config/termux-connecting"
|
|
6
6
|
CONFIG_FILE="$CONFIG_DIR/config"
|
|
7
|
+
DEVICES_DIR="$CONFIG_DIR/devices"
|
|
8
|
+
ACTIVE_DEVICE=""
|
|
7
9
|
SSH_PORT=8022
|
|
8
10
|
SSH_KEY="$HOME/.ssh/id_ed25519"
|
|
9
11
|
|
|
@@ -20,21 +22,46 @@ prompt() {
|
|
|
20
22
|
echo "${val:-$default}"
|
|
21
23
|
}
|
|
22
24
|
|
|
25
|
+
load_active() {
|
|
26
|
+
if [ -f "$CONFIG_FILE" ]; then
|
|
27
|
+
ACTIVE_DEVICE=$(cat "$CONFIG_FILE")
|
|
28
|
+
fi
|
|
29
|
+
}
|
|
30
|
+
|
|
23
31
|
load_config() {
|
|
24
|
-
|
|
32
|
+
local name="${1:-$ACTIVE_DEVICE}"
|
|
33
|
+
[ -z "$name" ] && return 1
|
|
34
|
+
local file="$DEVICES_DIR/$name"
|
|
35
|
+
[ -f "$file" ] && source "$file" || return 1
|
|
25
36
|
}
|
|
26
37
|
|
|
27
38
|
save_config() {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
39
|
+
local name="${1:-$ACTIVE_DEVICE}"
|
|
40
|
+
[ -z "$name" ] && return 1
|
|
41
|
+
mkdir -p "$DEVICES_DIR"
|
|
42
|
+
cat > "$DEVICES_DIR/$name" << EOF
|
|
43
|
+
HOST_ALIAS="$name"
|
|
31
44
|
SSH_USER="$SSH_USER"
|
|
32
45
|
SSH_HOST="$SSH_HOST"
|
|
33
46
|
SSH_PORT=$SSH_PORT
|
|
34
47
|
TELEGRAM_BOT_TOKEN="$TELEGRAM_BOT_TOKEN"
|
|
35
48
|
TELEGRAM_CHAT_ID="$TELEGRAM_CHAT_ID"
|
|
36
49
|
EOF
|
|
37
|
-
chmod 600 "$
|
|
50
|
+
chmod 600 "$DEVICES_DIR/$name"
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
set_active() {
|
|
54
|
+
local name="$1"
|
|
55
|
+
mkdir -p "$CONFIG_DIR"
|
|
56
|
+
echo "$name" > "$CONFIG_FILE"
|
|
57
|
+
ACTIVE_DEVICE="$name"
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
list_devices() {
|
|
61
|
+
mkdir -p "$DEVICES_DIR"
|
|
62
|
+
for f in "$DEVICES_DIR"/*; do
|
|
63
|
+
[ -f "$f" ] && basename "$f"
|
|
64
|
+
done
|
|
38
65
|
}
|
|
39
66
|
|
|
40
67
|
telegram_alert() {
|
|
@@ -49,17 +76,34 @@ telegram_alert() {
|
|
|
49
76
|
|
|
50
77
|
# ─── COMMAND: connection ──────────────────────────────────────
|
|
51
78
|
cmd_connection() {
|
|
52
|
-
|
|
79
|
+
local new_name="${1:-}"
|
|
80
|
+
load_active
|
|
81
|
+
|
|
82
|
+
# Jika ada argumen nama, setup device baru
|
|
83
|
+
if [ -n "$new_name" ]; then
|
|
84
|
+
HOST_ALIAS="$new_name"
|
|
85
|
+
fi
|
|
86
|
+
|
|
53
87
|
title "TERMUX CONNECT — Connection Setup"
|
|
54
88
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
89
|
+
if [ -z "$new_name" ] && [ -n "$ACTIVE_DEVICE" ]; then
|
|
90
|
+
echo " Device aktif: $ACTIVE_DEVICE"
|
|
91
|
+
echo -n " Setup device baru? [y/N]: "
|
|
92
|
+
read -r new_dev
|
|
93
|
+
if [[ "$new_dev" =~ ^[Yy]$ ]]; then
|
|
94
|
+
new_name=$(prompt "Nama device baru" "")
|
|
95
|
+
HOST_ALIAS="$new_name"
|
|
96
|
+
else
|
|
97
|
+
# Edit device aktif
|
|
98
|
+
load_config || true
|
|
99
|
+
HOST_ALIAS="${ACTIVE_DEVICE}"
|
|
100
|
+
fi
|
|
101
|
+
fi
|
|
102
|
+
|
|
103
|
+
if [ -z "$HOST_ALIAS" ]; then
|
|
104
|
+
HOST_ALIAS=$(prompt "Nama alias" "termux-a8star")
|
|
60
105
|
fi
|
|
61
106
|
|
|
62
|
-
HOST_ALIAS=$(prompt "Nama alias" "${HOST_ALIAS:-termux-a8star}")
|
|
63
107
|
SSH_USER=$(prompt "Username" "${SSH_USER:-u0_a237}")
|
|
64
108
|
SSH_HOST=$(prompt "IP Address" "${SSH_HOST:-192.168.1.8}")
|
|
65
109
|
|
|
@@ -70,7 +114,7 @@ cmd_connection() {
|
|
|
70
114
|
if timeout 10 ssh -o ConnectTimeout=5 -o BatchMode=yes -p "$SSH_PORT" "${SSH_USER}@${SSH_HOST}" "echo connected"; then
|
|
71
115
|
info "Koneksi berhasil (key-based)"
|
|
72
116
|
connected=true
|
|
73
|
-
elif command -v sshpass; then
|
|
117
|
+
elif command -v sshpass >/dev/null; then
|
|
74
118
|
local pass
|
|
75
119
|
pass=$(prompt "Password SSH" "")
|
|
76
120
|
if timeout 10 sshpass -p "$pass" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 -p "$SSH_PORT" "${SSH_USER}@${SSH_HOST}" "echo connected"; then
|
|
@@ -89,7 +133,7 @@ cmd_connection() {
|
|
|
89
133
|
if ! $connected; then
|
|
90
134
|
error "Tidak bisa terhubung ke ${SSH_USER}@${SSH_HOST}:${SSH_PORT}"
|
|
91
135
|
echo " Pastikan sshd sudah jalan di Termux dan satu jaringan."
|
|
92
|
-
return
|
|
136
|
+
return
|
|
93
137
|
fi
|
|
94
138
|
|
|
95
139
|
# SSH key
|
|
@@ -108,7 +152,7 @@ cmd_connection() {
|
|
|
108
152
|
|
|
109
153
|
# SSH config
|
|
110
154
|
mkdir -p "$HOME/.ssh"
|
|
111
|
-
if ! grep -q "Host $HOST_ALIAS$" "$HOME/.ssh/config"
|
|
155
|
+
if ! grep -q "Host $HOST_ALIAS$" "$HOME/.ssh/config"; then
|
|
112
156
|
cat >> "$HOME/.ssh/config" << EOF
|
|
113
157
|
|
|
114
158
|
Host $HOST_ALIAS
|
|
@@ -122,69 +166,134 @@ EOF
|
|
|
122
166
|
fi
|
|
123
167
|
info "Koneksi siap: ssh $HOST_ALIAS"
|
|
124
168
|
|
|
125
|
-
# Telegram — hanya first
|
|
126
|
-
|
|
169
|
+
# Telegram — hanya first time
|
|
170
|
+
local tel_setup=false
|
|
171
|
+
if [ -z "$TELEGRAM_BOT_TOKEN" ]; then
|
|
172
|
+
echo ""
|
|
127
173
|
title "2. Telegram Alert (opsional)"
|
|
128
|
-
echo "
|
|
129
|
-
|
|
174
|
+
echo -n "Ingat notifikasi Telegram saat koneksi putus? [y/N]: "
|
|
175
|
+
read -r tk
|
|
130
176
|
if [[ "$tk" =~ ^[Yy]$ ]]; then
|
|
131
177
|
TELEGRAM_BOT_TOKEN=$(prompt "Bot Token (dari @BotFather)" "")
|
|
132
|
-
TELEGRAM_CHAT_ID=$(prompt "Chat ID (atau
|
|
178
|
+
TELEGRAM_CHAT_ID=$(prompt "Chat ID (atau @username)" "")
|
|
133
179
|
if [ -n "$TELEGRAM_BOT_TOKEN" ] && [ -n "$TELEGRAM_CHAT_ID" ]; then
|
|
134
|
-
|
|
135
|
-
info "Telegram alert aktif"
|
|
180
|
+
tel_setup=true
|
|
136
181
|
else
|
|
137
|
-
warn "Lewati Telegram. Bisa diatur nanti
|
|
182
|
+
warn "Lewati Telegram. Bisa diatur nanti edit file device."
|
|
138
183
|
fi
|
|
139
|
-
else
|
|
140
|
-
info "Telegram bisa diaktifkan nanti: $CONFIG_FILE"
|
|
141
184
|
fi
|
|
142
185
|
fi
|
|
143
186
|
|
|
144
|
-
|
|
187
|
+
# Simpan & set active
|
|
188
|
+
save_config "$HOST_ALIAS"
|
|
189
|
+
set_active "$HOST_ALIAS"
|
|
190
|
+
|
|
191
|
+
if $tel_setup; then
|
|
192
|
+
telegram_alert "✅ *termux-connect-pc* — Admin tersimpan"
|
|
193
|
+
info "Telegram alert aktif"
|
|
194
|
+
fi
|
|
195
|
+
|
|
145
196
|
echo ""
|
|
146
197
|
info "Setup selesai! Jalankan: termux-connect-pc check"
|
|
147
198
|
}
|
|
148
199
|
|
|
200
|
+
# ─── COMMAND: list ────────────────────────────────────────────
|
|
201
|
+
cmd_list() {
|
|
202
|
+
load_active
|
|
203
|
+
title "TERMUX CONNECT — Devices"
|
|
204
|
+
local devices=()
|
|
205
|
+
while IFS= read -r d; do
|
|
206
|
+
devices+=("$d")
|
|
207
|
+
done < <(list_devices)
|
|
208
|
+
|
|
209
|
+
if [ ${#devices[@]} -eq 0 ]; then
|
|
210
|
+
warn "Belum ada device. Tambah: termux-connect-pc connection"
|
|
211
|
+
return
|
|
212
|
+
fi
|
|
213
|
+
|
|
214
|
+
for d in "${devices[@]}"; do
|
|
215
|
+
if [ "$d" = "$ACTIVE_DEVICE" ]; then
|
|
216
|
+
echo -e " ${GREEN}→ $d (aktif)${NC}"
|
|
217
|
+
# tampilkan detail
|
|
218
|
+
SSH_USER=""; SSH_HOST=""
|
|
219
|
+
source "$DEVICES_DIR/$d" || true
|
|
220
|
+
[ -n "$SSH_HOST" ] && echo " $SSH_USER@$SSH_HOST:$SSH_PORT"
|
|
221
|
+
[ -n "$TELEGRAM_BOT_TOKEN" ] && echo " Telegram: aktif"
|
|
222
|
+
else
|
|
223
|
+
echo " $d"
|
|
224
|
+
fi
|
|
225
|
+
done
|
|
226
|
+
echo ""
|
|
227
|
+
echo " Gunakan: termux-connect-pc switch <nama>"
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
# ─── COMMAND: switch ──────────────────────────────────────────
|
|
231
|
+
cmd_switch() {
|
|
232
|
+
local name="$1"
|
|
233
|
+
if [ -z "$name" ]; then
|
|
234
|
+
error "Nama device diperlukan. Lihat: termux-connect-pc list"
|
|
235
|
+
return
|
|
236
|
+
fi
|
|
237
|
+
if [ ! -f "$DEVICES_DIR/$name" ]; then
|
|
238
|
+
error "Device '$name' tidak ditemukan"
|
|
239
|
+
return
|
|
240
|
+
fi
|
|
241
|
+
set_active "$name"
|
|
242
|
+
info "Beralih ke device: $name"
|
|
243
|
+
}
|
|
244
|
+
|
|
149
245
|
# ─── COMMAND: check ───────────────────────────────────────────
|
|
150
246
|
cmd_check() {
|
|
151
|
-
|
|
152
|
-
if [
|
|
153
|
-
warn "Belum ada
|
|
154
|
-
return
|
|
247
|
+
load_active
|
|
248
|
+
if [ -z "$ACTIVE_DEVICE" ] || ! load_config; then
|
|
249
|
+
warn "Belum ada device. Tambah: termux-connect-pc connection"
|
|
250
|
+
return
|
|
155
251
|
fi
|
|
156
252
|
|
|
157
253
|
title "TERMUX CONNECT — Check"
|
|
158
|
-
echo "
|
|
254
|
+
echo "Device: ${ACTIVE_DEVICE} (${SSH_USER}@${SSH_HOST}:${SSH_PORT})"
|
|
159
255
|
echo ""
|
|
160
256
|
|
|
161
|
-
|
|
162
|
-
if timeout 10 ssh -o ConnectTimeout=5 -o BatchMode=yes "$HOST_ALIAS" "echo connected"; then
|
|
257
|
+
if timeout 10 ssh -o ConnectTimeout=5 -o BatchMode=yes "$ACTIVE_DEVICE" "echo connected"; then
|
|
163
258
|
info "Koneksi OK"
|
|
164
|
-
|
|
259
|
+
echo ""
|
|
260
|
+
info "Gunakan ssh $ACTIVE_DEVICE untuk koneksi"
|
|
165
261
|
else
|
|
166
262
|
error "Koneksi GAGAL"
|
|
167
|
-
telegram_alert "🚨 *Koneksi Termux PUTUS*%
|
|
263
|
+
telegram_alert "🚨 *Koneksi Termux PUTUS*%0ADevice: ${ACTIVE_DEVICE}%0AHost: ${SSH_USER}@${SSH_HOST}:${SSH_PORT}%0AWaktu: $(date)"
|
|
168
264
|
echo ""
|
|
169
265
|
warn "Notifikasi sudah dikirim ke Telegram admin"
|
|
170
266
|
echo ""
|
|
171
|
-
echo -n "Coba lagi? [y/N]: "
|
|
267
|
+
echo -n "Coba lagi? [y/N]: "
|
|
268
|
+
read -r retry
|
|
172
269
|
if [[ "$retry" =~ ^[Yy]$ ]]; then
|
|
173
270
|
cmd_check
|
|
174
271
|
return
|
|
175
272
|
fi
|
|
176
273
|
fi
|
|
274
|
+
}
|
|
177
275
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
276
|
+
# ─── COMMAND: remove ──────────────────────────────────────────
|
|
277
|
+
cmd_remove() {
|
|
278
|
+
local name="$1"
|
|
279
|
+
if [ -z "$name" ]; then
|
|
280
|
+
error "Nama device diperlukan"
|
|
281
|
+
return
|
|
282
|
+
fi
|
|
283
|
+
if [ ! -f "$DEVICES_DIR/$name" ]; then
|
|
284
|
+
error "Device '$name' tidak ditemukan"
|
|
285
|
+
return
|
|
286
|
+
fi
|
|
287
|
+
rm "$DEVICES_DIR/$name"
|
|
288
|
+
info "Device '$name' dihapus"
|
|
289
|
+
# Hapus dari SSH config
|
|
290
|
+
if [ -f "$HOME/.ssh/config" ]; then
|
|
291
|
+
sed -i '' "/^Host $name\$/,/^$/d" "$HOME/.ssh/config" || true
|
|
292
|
+
fi
|
|
293
|
+
if [ "$ACTIVE_DEVICE" = "$name" ]; then
|
|
294
|
+
rm -f "$CONFIG_FILE"
|
|
295
|
+
ACTIVE_DEVICE=""
|
|
296
|
+
warn "Device aktif dihapus. Set active: termux-connect-pc switch <nama>"
|
|
188
297
|
fi
|
|
189
298
|
}
|
|
190
299
|
|
|
@@ -195,11 +304,15 @@ cmd_help() {
|
|
|
195
304
|
echo "CLI koneksi Termux dari PC/Mac"
|
|
196
305
|
echo ""
|
|
197
306
|
echo "Penggunaan:"
|
|
198
|
-
echo " termux-connect-pc connection
|
|
199
|
-
echo " termux-connect-pc
|
|
200
|
-
echo " termux-connect-pc
|
|
201
|
-
echo " termux-connect-pc
|
|
307
|
+
echo " termux-connect-pc connection [nama] Setup device baru"
|
|
308
|
+
echo " termux-connect-pc list Daftar semua device"
|
|
309
|
+
echo " termux-connect-pc switch <nama> Pilih device aktif"
|
|
310
|
+
echo " termux-connect-pc check Cek koneksi device aktif"
|
|
311
|
+
echo " termux-connect-pc remove <nama> Hapus device"
|
|
312
|
+
echo " termux-connect-pc help Bantuan ini"
|
|
313
|
+
echo " termux-connect-pc version Versi"
|
|
202
314
|
echo ""
|
|
315
|
+
echo "Multi-device: kelola beberapa HP Termux dari satu PC."
|
|
203
316
|
echo "Telegram alert otomatis ke admin saat koneksi putus."
|
|
204
317
|
echo ""
|
|
205
318
|
}
|
|
@@ -212,13 +325,17 @@ cmd_version() {
|
|
|
212
325
|
# ─── MAIN ─────────────────────────────────────────────────────
|
|
213
326
|
main() {
|
|
214
327
|
case "${1:-}" in
|
|
215
|
-
connection) cmd_connection ;;
|
|
328
|
+
connection) cmd_connection "${2:-}" ;;
|
|
329
|
+
list|ls) cmd_list ;;
|
|
330
|
+
switch|use) cmd_switch "${2:-}" ;;
|
|
216
331
|
check) cmd_check ;;
|
|
332
|
+
remove|rm) cmd_remove "${2:-}" ;;
|
|
217
333
|
help|--help|-h) cmd_help ;;
|
|
218
334
|
version|--version|-v) cmd_version ;;
|
|
219
335
|
*)
|
|
220
|
-
|
|
221
|
-
|
|
336
|
+
load_active
|
|
337
|
+
if [ -z "$ACTIVE_DEVICE" ]; then
|
|
338
|
+
echo "Belum ada device. Setup koneksi pertama."
|
|
222
339
|
echo ""
|
|
223
340
|
cmd_connection
|
|
224
341
|
else
|
package/bin/termux-connecting
CHANGED
|
@@ -107,7 +107,7 @@ done
|
|
|
107
107
|
|
|
108
108
|
# ─── 4. Password ───
|
|
109
109
|
title "3. Cek Password (passwd)"
|
|
110
|
-
if [ -f "$HOME/.termux_authinfo" ] || passwd -S
|
|
110
|
+
if [ -f "$HOME/.termux_authinfo" ] || passwd -S | grep -q "P"; then
|
|
111
111
|
info "Password sudah diatur"
|
|
112
112
|
else
|
|
113
113
|
echo " Belum ada password. Setting password diperlukan untuk SSH."
|
|
@@ -136,10 +136,10 @@ if [ -z "$IP" ] && command -v ifconfig >/dev/null; then
|
|
|
136
136
|
IP=$(ifconfig | awk '/inet /{print $2}' | grep -v 127.0.0.1 | head -1)
|
|
137
137
|
fi
|
|
138
138
|
if [ -z "$IP" ] && command -v hostname >/dev/null; then
|
|
139
|
-
IP=$(hostname -I
|
|
139
|
+
IP=$(hostname -I | awk '{print $1}')
|
|
140
140
|
fi
|
|
141
141
|
if [ -z "$IP" ] && [ -d /data/data/com.termux ]; then
|
|
142
|
-
IP=$(ip route get 1.1.1.1
|
|
142
|
+
IP=$(ip route get 1.1.1.1 | awk '{print $7}' | head -1)
|
|
143
143
|
fi
|
|
144
144
|
if [ -z "$IP" ]; then
|
|
145
145
|
IP="(tidak terdeteksi — pastikan WiFi/data aktif)"
|