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.
@@ -1,9 +1,11 @@
1
1
  #!/usr/bin/env bash
2
2
  set -e
3
3
 
4
- VERSION="1.1.13"
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
- [ -f "$CONFIG_FILE" ] && source "$CONFIG_FILE"
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
- mkdir -p "$CONFIG_DIR"
29
- cat > "$CONFIG_FILE" << EOF
30
- HOST_ALIAS="$HOST_ALIAS"
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 "$CONFIG_FILE"
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
- load_config
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
- local first_run=false
56
- if [ ! -f "$CONFIG_FILE" ]; then
57
- first_run=true
58
- echo "Pertama kali dijalankan. Setup koneksi ke Termux."
59
- echo "------------------------------------------------"
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 1
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" 2>/dev/null; then
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 run
126
- if $first_run; then
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 "Ingin dapat notifikasi Telegram saat koneksi bermasalah?"
129
- echo -n "Setup sekarang? [y/N]: "; read -r tk
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 username @username)" "")
178
+ TELEGRAM_CHAT_ID=$(prompt "Chat ID (atau @username)" "")
133
179
  if [ -n "$TELEGRAM_BOT_TOKEN" ] && [ -n "$TELEGRAM_CHAT_ID" ]; then
134
- telegram_alert "✅ *termux-connect-pc* — Admin tersimpan"
135
- info "Telegram alert aktif"
180
+ tel_setup=true
136
181
  else
137
- warn "Lewati Telegram. Bisa diatur nanti dengan edit: $CONFIG_FILE"
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
- save_config
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
- load_config
152
- if [ ! -f "$CONFIG_FILE" ]; then
153
- warn "Belum ada konfigurasi. Jalankan dulu: termux-connect-pc connection"
154
- return 1
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 "Memeriksa ${HOST_ALIAS} (${SSH_USER}@${SSH_HOST}:${SSH_PORT})..."
254
+ echo "Device: ${ACTIVE_DEVICE} (${SSH_USER}@${SSH_HOST}:${SSH_PORT})"
159
255
  echo ""
160
256
 
161
- local ok=false
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
- ok=true
259
+ echo ""
260
+ info "Gunakan ssh $ACTIVE_DEVICE untuk koneksi"
165
261
  else
166
262
  error "Koneksi GAGAL"
167
- telegram_alert "🚨 *Koneksi Termux PUTUS*%0AHost: ${HOST_ALIAS}%0AUser: ${SSH_USER}%0AIP: ${SSH_HOST}:${SSH_PORT}%0AWaktu: $(date)"
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]: "; read -r retry
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
- if $ok; then
179
- echo ""
180
- info "Gunakan ssh $HOST_ALIAS untuk koneksi"
181
- echo ""
182
- echo -n "Cek lagi nanti secara berkala? (setup cron/dimonitor) [y/N]: "; read -r monitor
183
- if [[ "$monitor" =~ ^[Yy]$ ]]; then
184
- echo ""
185
- echo " Tambahkan ke crontab (crontab -e):"
186
- echo " */5 * * * * ${0} check"
187
- fi
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 Setup koneksi ke Termux (hanya sekali)"
199
- echo " termux-connect-pc check Cek status koneksi & kirim alert"
200
- echo " termux-connect-pc help Tampilkan bantuan ini"
201
- echo " termux-connect-pc version Tampilkan versi"
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
- if [ ! -f "$CONFIG_FILE" ]; then
221
- echo "Pertama kali dijalankan! Setup koneksi dulu."
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
@@ -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 2>/dev/null | grep -q "P"; then
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 2>/dev/null | awk '{print $1}')
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 2>/dev/null | awk '{print $7}' | head -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)"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "termux-connecting",
3
- "version": "1.1.13",
3
+ "version": "1.1.14",
4
4
  "description": "CLI setup Termux + koneksi SSH dari PC/Mac dengan Telegram alert",
5
5
  "bin": {
6
6
  "termux-connecting": "bin/termux-connecting",