termux-connecting 1.1.16 → 1.1.20

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.
@@ -17,11 +17,26 @@ title() { echo -e "\n${CYAN}━━━ $1 ━━━${NC}\n"; }
17
17
 
18
18
  prompt() {
19
19
  local val default="$2"
20
- echo -n "$1${default:+ [$default]}: "
20
+ echo -n "$1${default:+ [$default]}: " >&2
21
21
  read -r val
22
22
  echo "${val:-$default}"
23
23
  }
24
24
 
25
+ has_timeout() {
26
+ command -v timeout >/dev/null 2>&1 || command -v gtimeout >/dev/null 2>&1
27
+ }
28
+
29
+ run_timeout() {
30
+ local sec="$1"; shift
31
+ if command -v timeout >/dev/null 2>&1; then
32
+ timeout "$sec" "$@"
33
+ elif command -v gtimeout >/dev/null 2>&1; then
34
+ gtimeout "$sec" "$@"
35
+ else
36
+ "$@"
37
+ fi
38
+ }
39
+
25
40
  load_active() {
26
41
  if [ -f "$CONFIG_FILE" ]; then
27
42
  ACTIVE_DEVICE=$(cat "$CONFIG_FILE")
@@ -149,7 +164,7 @@ cmd_connection() {
149
164
  local connected=false
150
165
 
151
166
  # Key-based
152
- if timeout 10 ssh -o ConnectTimeout=5 -o BatchMode=yes -p "$SSH_PORT" "${SSH_USER}@${SSH_HOST}" "echo connected"; then
167
+ if run_timeout 10 ssh -o ConnectTimeout=5 -o BatchMode=yes -p "$SSH_PORT" "${SSH_USER}@${SSH_HOST}" "echo connected"; then
153
168
  info "Koneksi berhasil (key-based)"
154
169
  connected=true
155
170
  # Password via sshpass
@@ -157,7 +172,7 @@ cmd_connection() {
157
172
  echo " SSH key tidak dikenali. Coba dengan password..."
158
173
  local pass
159
174
  pass=$(prompt " ➤ Password SSH" "")
160
- if timeout 10 sshpass -p "$pass" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 -p "$SSH_PORT" "${SSH_USER}@${SSH_HOST}" "echo connected"; then
175
+ if run_timeout 10 sshpass -p "$pass" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 -p "$SSH_PORT" "${SSH_USER}@${SSH_HOST}" "echo connected"; then
161
176
  info "Koneksi berhasil (password)"
162
177
  connected=true
163
178
  fi
@@ -169,7 +184,7 @@ cmd_connection() {
169
184
  echo " ssh -p ${SSH_PORT} ${SSH_USER}@${SSH_HOST}"
170
185
  echo ""
171
186
  echo -n " ➤ Setelah berhasil, tekan enter untuk lanjut..."; read -r
172
- if timeout 10 ssh -o ConnectTimeout=5 -o BatchMode=yes -p "$SSH_PORT" "${SSH_USER}@${SSH_HOST}" "echo connected"; then
187
+ if run_timeout 10 ssh -o ConnectTimeout=5 -o BatchMode=yes -p "$SSH_PORT" "${SSH_USER}@${SSH_HOST}" "echo connected"; then
173
188
  connected=true
174
189
  fi
175
190
  fi
@@ -207,7 +222,7 @@ cmd_connection() {
207
222
  if [ -f "$SSH_KEY" ]; then
208
223
  echo ""
209
224
  echo " Meng-copy public key ke HP..."
210
- if timeout 15 ssh-copy-id -o StrictHostKeyChecking=no -o ConnectTimeout=10 -p "$SSH_PORT" "${SSH_USER}@${SSH_HOST}"; then
225
+ if run_timeout 15 ssh-copy-id -o StrictHostKeyChecking=no -o ConnectTimeout=10 -p "$SSH_PORT" "${SSH_USER}@${SSH_HOST}"; then
211
226
  info "Public key berhasil di-copy ke HP"
212
227
  else
213
228
  warn "Gagal copy otomatis. Copy manual:"
@@ -333,7 +348,7 @@ cmd_check() {
333
348
  echo "Device: ${ACTIVE_DEVICE} (${SSH_USER}@${SSH_HOST}:${SSH_PORT})"
334
349
  echo ""
335
350
 
336
- if timeout 10 ssh -o ConnectTimeout=5 -o BatchMode=yes "$ACTIVE_DEVICE" "echo connected"; then
351
+ if run_timeout 10 ssh -o ConnectTimeout=5 -o BatchMode=yes "$ACTIVE_DEVICE" "echo connected"; then
337
352
  info "Koneksi OK"
338
353
  echo ""
339
354
  info "Gunakan ssh $ACTIVE_DEVICE untuk koneksi"
@@ -124,8 +124,22 @@ else
124
124
  fi
125
125
  fi
126
126
 
127
- # ─── 5. Informasi Koneksi ───
128
- title "4. Informasi Koneksi"
127
+ # ─── 5. SSH Server ───
128
+ title "4. Cek SSH Server (sshd)"
129
+ if pgrep -x sshd >/dev/null; then
130
+ info "sshd sudah berjalan"
131
+ else
132
+ echo " sshd belum jalan. Menjalankan..."
133
+ if sshd; then
134
+ info "sshd berhasil dijalankan"
135
+ else
136
+ error "Gagal menjalankan sshd"
137
+ echo " Coba manual: sshd"
138
+ fi
139
+ fi
140
+
141
+ # ─── 6. Informasi Koneksi ───
142
+ title "5. Informasi Koneksi"
129
143
  USERNAME=$(whoami)
130
144
 
131
145
  IP=""
@@ -142,31 +156,63 @@ if [ -z "$IP" ] && [ -d /data/data/com.termux ]; then
142
156
  IP=$(ip route get 1.1.1.1 | awk '{print $7}' | head -1)
143
157
  fi
144
158
  if [ -z "$IP" ]; then
145
- IP="(tidak terdeteksi — pastikan WiFi/data aktif)"
159
+ IP=""
146
160
  fi
147
161
 
162
+ is_cgnat() {
163
+ [[ "$1" =~ ^10\. ]] || [[ "$1" =~ ^100\.(6[4-9]|[7-9][0-9]|1[0-1][0-9]|12[0-7])\. ]]
164
+ }
165
+
166
+ is_wifi() {
167
+ [[ "$1" =~ ^192\.168\. ]] || [[ "$1" =~ ^172\.(1[6-9]|2[0-9]|3[01])\. ]]
168
+ }
169
+
148
170
  echo " Username : $USERNAME"
149
- echo " IP : $IP"
171
+ echo " IP : ${IP:-tidak terdeteksi}"
150
172
  echo " Port : 8022"
151
173
  echo ""
152
- echo " Di PC/Mac, jalankan perintah berikut:"
153
- echo " npm i -g termux-connecting"
154
- echo " termux-connect-pc"
155
- echo ""
156
- echo " Lalu isi data di atas saat diminta."
157
- echo " Setelah setup, cukup: ssh ${HOST_ALIAS:-termux-a8star}"
158
- echo ""
159
- warn "Pastikan HP dan PC terhubung ke jaringan WiFi YANG SAMA"
160
- echo ""
161
- echo " Jika SSH server belum jalan:"
162
- echo " sshd"
163
- echo ""
164
- echo " Data koneksi — simpan untuk setup PC:"
165
- echo " ┌─────────────────────────────┐"
166
- echo " Username : $USERNAME │"
167
- echo " IP : $IP │"
168
- echo " Port : 8022 │"
169
- echo " └─────────────────────────────┘"
174
+
175
+ if [ -z "$IP" ]; then
176
+ warn "IP tidak terdeteksi"
177
+ echo " Pastikan HP terhubung ke WiFi, bukan data seluler."
178
+ echo ""
179
+ echo " Langkah:"
180
+ echo " 1. Buka Pengaturan → WiFi, hubungkan ke jaringan rumah/kantor"
181
+ echo " 2. Setelah terhubung, jalankan ulang: termux-connecting -y"
182
+ elif is_cgnat "$IP"; then
183
+ warn "IP ${IP} terdeteksi sebagai jaringan SELULER/VPN"
184
+ echo " PC dan HP harus dalam jaringan WiFi yang SAMA."
185
+ echo ""
186
+ echo " Langkah:"
187
+ echo " 1. Matikan data seluler dan VPN di HP"
188
+ echo " 2. Buka Pengaturan → WiFi, hubungkan ke jaringan yang sama dengan PC"
189
+ echo " 3. Catat IP yang muncul (biasanya 192.168.x.x)"
190
+ echo " 4. Jalankan ulang: termux-connecting -y"
191
+ echo " 5. Atau cek IP manual: ip a | grep wlan"
192
+ elif is_wifi "$IP"; then
193
+ echo " Di PC/Mac, jalankan perintah berikut:"
194
+ echo " npm i -g termux-connecting"
195
+ echo " termux-connect-pc"
196
+ echo ""
197
+ echo " Lalu isi data di atas saat diminta."
198
+ echo " Setelah setup, cukup: ssh ${HOST_ALIAS:-termux-a8star}"
199
+ echo ""
200
+ warn "Pastikan HP dan PC terhubung ke jaringan WiFi YANG SAMA"
201
+ echo ""
202
+ echo " Data koneksi — simpan untuk setup PC:"
203
+ echo " ┌─────────────────────────────┐"
204
+ echo " │ Username : $USERNAME │"
205
+ echo " │ IP : $IP │"
206
+ echo " │ Port : 8022 │"
207
+ echo " └─────────────────────────────┘"
208
+ else
209
+ warn "IP ${IP} tidak dikenal — mungkin bukan jaringan lokal"
210
+ echo " Pastikan HP terhubung ke WiFi, bukan data seluler."
211
+ echo ""
212
+ echo " Cek koneksi WiFi: ip a | grep wlan"
213
+ echo " Jika IP masih ${IP}, mungkin HP menggunakan VPN/proxy."
214
+ echo " Matikan VPN dan coba lagi: termux-connecting -y"
215
+ fi
170
216
  echo ""
171
217
 
172
218
  echo "----------------------------------------"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "termux-connecting",
3
- "version": "1.1.16",
3
+ "version": "1.1.20",
4
4
  "description": "CLI setup Termux + koneksi SSH dari PC/Mac dengan Telegram alert",
5
5
  "bin": {
6
6
  "termux-connecting": "bin/termux-connecting",