termux-connecting 1.0.0

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/README.md ADDED
@@ -0,0 +1,125 @@
1
+ # Termux Connecting
2
+
3
+ CLI untuk setup Termux dan koneksi SSH dari PC/Mac — plus Telegram alert jika koneksi putus.
4
+
5
+ ## Tutorial Lengkap
6
+
7
+ ### 1. Install di Termux
8
+
9
+ Jalankan di HP (Termux):
10
+
11
+ ```bash
12
+ pkg install -y nodejs-lts
13
+ npm i -g termux-connecting
14
+ ```
15
+
16
+ Atau via curl installer (tanpa Node.js):
17
+
18
+ ```bash
19
+ curl -fsSL https://raw.githubusercontent.com/Ariska138/termux-connecting/main/install.sh | bash
20
+ ```
21
+
22
+ ### 2. Setup Perangkat Termux
23
+
24
+ ```bash
25
+ termux-connecting
26
+ ```
27
+
28
+ Script akan melakukan:
29
+ 1. `pkg update && pkg upgrade` — jika repo error, tawarkan ganti ke repo stable via `termux-change-repo`
30
+ 2. Cek Git & Node.js — tawarkan install jika belum ada
31
+ 3. Cek password SSH — jika belum, minta buat password baru via `passwd`
32
+ 4. Tampilkan **Username** dan **IP Address** perangkat
33
+
34
+ Simpan info username dan IP yang muncul. Ini yang akan dipakai dari PC.
35
+
36
+ > **Sebelum lanjut**: pastikan SSH server sudah jalan di Termux:
37
+ > ```bash
38
+ > sshd
39
+ > ```
40
+ > Cek IP kapan saja: `ip a | grep inet`
41
+
42
+ ### 3. Install & Koneksi dari PC/Mac
43
+
44
+ Di komputer, install:
45
+
46
+ ```bash
47
+ npm i -g termux-connecting
48
+ ```
49
+
50
+ Lalu jalankan:
51
+
52
+ ```bash
53
+ termux-connect-pc
54
+ ```
55
+
56
+ Karena pertama kali, akan masuk ke menu **connection**:
57
+
58
+ ```
59
+ Nama alias [termux-a8star]:
60
+ Username [u0_a237]:
61
+ IP Address [192.168.1.8]:
62
+ ```
63
+
64
+ Isi dengan username dan IP yang ditampilkan di langkah 2.
65
+
66
+ Script akan:
67
+ - Cek koneksi (key-based dulu, fallback ke password)
68
+ - Tawarkan buat SSH key agar koneksi tanpa password
69
+ - Buat SSH config alias
70
+ - **Hanya first run**: tawarkan setup **Telegram Alert**
71
+
72
+ #### Telegram Alert (opsional, first run saja)
73
+
74
+ ```
75
+ Ingin dapat notifikasi Telegram saat koneksi bermasalah? [y/N]: y
76
+ Bot Token (dari @BotFather):
77
+ Chat ID (atau username @username):
78
+ ```
79
+
80
+ Cara dapat token:
81
+ 1. Buka Telegram, cari **@BotFather**
82
+ 2. Kirim `/newbot`, ikuti petunjuk
83
+ 3. Dapatkan token (format: `123456:ABC-DEF1234`)
84
+
85
+ Chat ID bisa diisi username Anda (misal `@ariska138`).
86
+
87
+ ### 4. Cek Koneksi
88
+
89
+ ```bash
90
+ termux-connect-pc check
91
+ ```
92
+
93
+ Jika koneksi putus, script akan:
94
+ 1. Kirim notifikasi ke Telegram admin
95
+ 2. Tawarkan retry
96
+
97
+ ## Subcommand Reference
98
+
99
+ ```bash
100
+ termux-connect-pc connection # Setup/ubah koneksi
101
+ termux-connect-pc check # Cek koneksi & kirim alert
102
+ termux-connect-pc help # Bantuan
103
+ termux-connect-pc version # Versi
104
+ ```
105
+
106
+ ## Koneksi Manual via SSH
107
+
108
+ Setelah setup, cukup:
109
+ ```bash
110
+ ssh termux-a8star
111
+ ```
112
+
113
+ Atau manual:
114
+ ```bash
115
+ ssh -p 8022 u0_a237@192.168.1.8
116
+ ```
117
+
118
+ ## Dokumentasi Detail
119
+
120
+ - [Architecture](docs/architecture.md) — System design, flow, timeout policy
121
+ - [Troubleshooting](docs/troubleshooting.md) — Common issues & solutions
122
+
123
+ ## Lisensi
124
+
125
+ MIT
@@ -0,0 +1,231 @@
1
+ #!/usr/bin/env bash
2
+ set -e
3
+
4
+ VERSION="1.0.0"
5
+ CONFIG_DIR="$HOME/.config/termux-connecting"
6
+ CONFIG_FILE="$CONFIG_DIR/config"
7
+ SSH_PORT=8022
8
+ SSH_KEY="$HOME/.ssh/id_ed25519"
9
+
10
+ GREEN='\033[0;32m'; YELLOW='\033[1;33m'; RED='\033[0;31m'; CYAN='\033[0;36m'; NC='\033[0m'
11
+ info() { echo -e "${GREEN}[✓]${NC} $1"; }
12
+ warn() { echo -e "${YELLOW}[!]${NC} $1"; }
13
+ error() { echo -e "${RED}[✗]${NC} $1"; }
14
+ title() { echo -e "\n${CYAN}━━━ $1 ━━━${NC}\n"; }
15
+
16
+ prompt() {
17
+ local val default="$2"
18
+ echo -n "$1${default:+ [$default]}: "
19
+ read -r val
20
+ echo "${val:-$default}"
21
+ }
22
+
23
+ load_config() {
24
+ [ -f "$CONFIG_FILE" ] && source "$CONFIG_FILE"
25
+ }
26
+
27
+ save_config() {
28
+ mkdir -p "$CONFIG_DIR"
29
+ cat > "$CONFIG_FILE" << EOF
30
+ HOST_ALIAS="$HOST_ALIAS"
31
+ SSH_USER="$SSH_USER"
32
+ SSH_HOST="$SSH_HOST"
33
+ SSH_PORT=$SSH_PORT
34
+ TELEGRAM_BOT_TOKEN="$TELEGRAM_BOT_TOKEN"
35
+ TELEGRAM_CHAT_ID="$TELEGRAM_CHAT_ID"
36
+ EOF
37
+ chmod 600 "$CONFIG_FILE"
38
+ }
39
+
40
+ telegram_alert() {
41
+ local msg="$1"
42
+ if [ -n "$TELEGRAM_BOT_TOKEN" ] && [ -n "$TELEGRAM_CHAT_ID" ]; then
43
+ curl -s --connect-timeout 10 --max-time 15 \
44
+ "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
45
+ -d "chat_id=${TELEGRAM_CHAT_ID}" \
46
+ -d "text=${msg}" >/dev/null
47
+ fi
48
+ }
49
+
50
+ # ─── COMMAND: connection ──────────────────────────────────────
51
+ cmd_connection() {
52
+ load_config
53
+ title "TERMUX CONNECT — Connection Setup"
54
+
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 "------------------------------------------------"
60
+ fi
61
+
62
+ HOST_ALIAS=$(prompt "Nama alias" "${HOST_ALIAS:-termux-a8star}")
63
+ SSH_USER=$(prompt "Username" "${SSH_USER:-u0_a237}")
64
+ SSH_HOST=$(prompt "IP Address" "${SSH_HOST:-192.168.1.8}")
65
+
66
+ title "1. Cek Konektifitas"
67
+ echo "Mencoba ke ${SSH_USER}@${SSH_HOST}:${SSH_PORT}..."
68
+
69
+ local connected=false
70
+ if timeout 10 ssh -o ConnectTimeout=5 -o BatchMode=yes -p "$SSH_PORT" "${SSH_USER}@${SSH_HOST}" "echo connected"; then
71
+ info "Koneksi berhasil (key-based)"
72
+ connected=true
73
+ elif command -v sshpass; then
74
+ local pass
75
+ pass=$(prompt "Password SSH" "")
76
+ if timeout 10 sshpass -p "$pass" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 -p "$SSH_PORT" "${SSH_USER}@${SSH_HOST}" "echo connected"; then
77
+ info "Koneksi berhasil (password)"
78
+ connected=true
79
+ fi
80
+ else
81
+ echo ""
82
+ warn "sshpass tidak terinstall. Konek manual dulu: ssh -p ${SSH_PORT} ${SSH_USER}@${SSH_HOST}"
83
+ echo -n " Setelah berhasil, tekan enter untuk lanjut..."; read -r
84
+ if timeout 10 ssh -o ConnectTimeout=5 -o BatchMode=yes -p "$SSH_PORT" "${SSH_USER}@${SSH_HOST}" "echo connected"; then
85
+ connected=true
86
+ fi
87
+ fi
88
+
89
+ if ! $connected; then
90
+ error "Tidak bisa terhubung ke ${SSH_USER}@${SSH_HOST}:${SSH_PORT}"
91
+ echo " Pastikan sshd sudah jalan di Termux dan satu jaringan."
92
+ return 1
93
+ fi
94
+
95
+ # SSH key
96
+ if [ ! -f "$SSH_KEY" ]; then
97
+ echo ""
98
+ echo -n "Buat SSH key biar tanpa password? [Y/n]: "
99
+ read -r mk
100
+ if [[ -z "$mk" || "$mk" =~ ^[Yy]$ ]]; then
101
+ ssh-keygen -t ed25519 -f "$SSH_KEY" -N "" -C "termux-connect"
102
+ fi
103
+ fi
104
+ if [ -f "$SSH_KEY" ]; then
105
+ timeout 15 ssh-copy-id -o StrictHostKeyChecking=no -o ConnectTimeout=10 -p "$SSH_PORT" "${SSH_USER}@${SSH_HOST}" 2>&1 || \
106
+ warn "Copy key gagal. Manual: ssh-copy-id -p ${SSH_PORT} ${SSH_USER}@${SSH_HOST}"
107
+ fi
108
+
109
+ # SSH config
110
+ mkdir -p "$HOME/.ssh"
111
+ if ! grep -q "Host $HOST_ALIAS$" "$HOME/.ssh/config" 2>/dev/null; then
112
+ cat >> "$HOME/.ssh/config" << EOF
113
+
114
+ Host $HOST_ALIAS
115
+ HostName $SSH_HOST
116
+ User $SSH_USER
117
+ Port $SSH_PORT
118
+ StrictHostKeyChecking no
119
+ UserKnownHostsFile /dev/null
120
+ EOF
121
+ chmod 600 "$HOME/.ssh/config"
122
+ fi
123
+ info "Koneksi siap: ssh $HOST_ALIAS"
124
+
125
+ # Telegram — hanya first run
126
+ if $first_run; then
127
+ title "2. Telegram Alert (opsional)"
128
+ echo "Ingin dapat notifikasi Telegram saat koneksi bermasalah?"
129
+ echo -n "Setup sekarang? [y/N]: "; read -r tk
130
+ if [[ "$tk" =~ ^[Yy]$ ]]; then
131
+ TELEGRAM_BOT_TOKEN=$(prompt "Bot Token (dari @BotFather)" "")
132
+ TELEGRAM_CHAT_ID=$(prompt "Chat ID (atau username @username)" "")
133
+ if [ -n "$TELEGRAM_BOT_TOKEN" ] && [ -n "$TELEGRAM_CHAT_ID" ]; then
134
+ telegram_alert "✅ *termux-connect-pc* — Admin tersimpan"
135
+ info "Telegram alert aktif"
136
+ else
137
+ warn "Lewati Telegram. Bisa diatur nanti dengan edit: $CONFIG_FILE"
138
+ fi
139
+ else
140
+ info "Telegram bisa diaktifkan nanti: $CONFIG_FILE"
141
+ fi
142
+ fi
143
+
144
+ save_config
145
+ echo ""
146
+ info "Setup selesai! Jalankan: termux-connect-pc check"
147
+ }
148
+
149
+ # ─── COMMAND: check ───────────────────────────────────────────
150
+ 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
155
+ fi
156
+
157
+ title "TERMUX CONNECT — Check"
158
+ echo "Memeriksa ${HOST_ALIAS} (${SSH_USER}@${SSH_HOST}:${SSH_PORT})..."
159
+ echo ""
160
+
161
+ local ok=false
162
+ if timeout 10 ssh -o ConnectTimeout=5 -o BatchMode=yes "$HOST_ALIAS" "echo connected"; then
163
+ info "Koneksi OK"
164
+ ok=true
165
+ else
166
+ error "Koneksi GAGAL"
167
+ telegram_alert "🚨 *Koneksi Termux PUTUS*%0AHost: ${HOST_ALIAS}%0AUser: ${SSH_USER}%0AIP: ${SSH_HOST}:${SSH_PORT}%0AWaktu: $(date)"
168
+ echo ""
169
+ warn "Notifikasi sudah dikirim ke Telegram admin"
170
+ echo ""
171
+ echo -n "Coba lagi? [y/N]: "; read -r retry
172
+ if [[ "$retry" =~ ^[Yy]$ ]]; then
173
+ cmd_check
174
+ return
175
+ fi
176
+ fi
177
+
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
188
+ fi
189
+ }
190
+
191
+ # ─── COMMAND: help ────────────────────────────────────────────
192
+ cmd_help() {
193
+ echo ""
194
+ echo "termux-connect-pc v${VERSION}"
195
+ echo "CLI koneksi Termux dari PC/Mac"
196
+ echo ""
197
+ 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"
202
+ echo ""
203
+ echo "Telegram alert otomatis ke admin saat koneksi putus."
204
+ echo ""
205
+ }
206
+
207
+ # ─── COMMAND: version ─────────────────────────────────────────
208
+ cmd_version() {
209
+ echo "termux-connect-pc v${VERSION}"
210
+ }
211
+
212
+ # ─── MAIN ─────────────────────────────────────────────────────
213
+ main() {
214
+ case "${1:-}" in
215
+ connection) cmd_connection ;;
216
+ check) cmd_check ;;
217
+ help|--help|-h) cmd_help ;;
218
+ version|--version|-v) cmd_version ;;
219
+ *)
220
+ if [ ! -f "$CONFIG_FILE" ]; then
221
+ echo "Pertama kali dijalankan! Setup koneksi dulu."
222
+ echo ""
223
+ cmd_connection
224
+ else
225
+ cmd_help
226
+ fi
227
+ ;;
228
+ esac
229
+ }
230
+
231
+ main "$@"
@@ -0,0 +1,90 @@
1
+ #!/data/data/com.termux/files/usr/bin/bash
2
+
3
+ set -e
4
+
5
+ GREEN='\033[0;32m'
6
+ YELLOW='\033[1;33m'
7
+ RED='\033[0;31m'
8
+ CYAN='\033[0;36m'
9
+ NC='\033[0m'
10
+
11
+ info() { echo -e "${GREEN}[✓]${NC} $1"; }
12
+ warn() { echo -e "${YELLOW}[!]${NC} $1"; }
13
+ error() { echo -e "${RED}[✗]${NC} $1"; }
14
+ title() { echo -e "\n${CYAN}━━━ $1 ━━━${NC}\n"; }
15
+
16
+ title "TERMUX CONNECTING — Setup"
17
+ echo "Memeriksa dan mengkonfigurasi Termux..."
18
+ echo "----------------------------------------"
19
+
20
+ title "1. Update & Upgrade Paket"
21
+ echo "Menjalankan pkg update && pkg upgrade..."
22
+ if timeout 300 pkg update -y && timeout 300 pkg upgrade -y; then
23
+ info "Update & upgrade berhasil"
24
+ else
25
+ warn "Gagal update/upgrade. Mungkin repo tidak stabil."
26
+ echo ""
27
+ echo " Untuk mengganti ke repo stable, jalankan:"
28
+ echo " termux-change-repo"
29
+ echo ""
30
+ echo -n " Ingin ganti repo sekarang? [y/N]: "
31
+ read -r change_repo
32
+ if [[ "$change_repo" =~ ^[Yy]$ ]]; then
33
+ termux-change-repo
34
+ echo " Ulangi update setelah selesai."
35
+ fi
36
+ fi
37
+
38
+ title "2. Cek Git & Node.js"
39
+ for cmd in git node; do
40
+ if command -v "$cmd"; then
41
+ info "$cmd sudah terinstall ($($cmd --version || echo '?'))"
42
+ else
43
+ warn "$cmd belum terinstall."
44
+ echo -n " Install $cmd sekarang? [Y/n]: "
45
+ read -r install_it
46
+ if [[ -z "$install_it" || "$install_it" =~ ^[Yy]$ ]]; then
47
+ pkg install -y "$cmd" && info "$cmd berhasil diinstall" || error "Gagal install $cmd"
48
+ else
49
+ warn "Lewati install $cmd"
50
+ fi
51
+ fi
52
+ done
53
+
54
+ title "3. Cek Password (passwd)"
55
+ if [ -f "$HOME/.termux_authinfo" ] || passwd -S | grep -q "P"; then
56
+ info "Password sudah diatur"
57
+ else
58
+ warn "Belum ada password. Setting password diperlukan untuk SSH."
59
+ echo ""
60
+ echo " Masukkan password baru:"
61
+ if passwd; then
62
+ info "Password berhasil disimpan"
63
+ else
64
+ error "Gagal menyimpan password"
65
+ fi
66
+ fi
67
+
68
+ title "4. Informasi Koneksi"
69
+ USERNAME=$(whoami)
70
+ IP=$(ip -o -4 addr show | awk '{print $4}' | cut -d/ -f1 | grep -v 127.0.0.1 | head -n1)
71
+
72
+ if [ -z "$IP" ]; then
73
+ IP="(tidak terdeteksi — pastikan WiFi/data aktif)"
74
+ fi
75
+
76
+ echo " Username : $USERNAME"
77
+ echo " IP : $IP"
78
+ echo " Port : 8022"
79
+ echo ""
80
+ echo " Untuk koneksi dari PC/Mac:"
81
+ echo " ssh -p 8022 ${USERNAME}@${IP}"
82
+ echo ""
83
+ warn "Pastikan HP dan PC terhubung ke jaringan WiFi YANG SAMA"
84
+ echo ""
85
+ echo " Jika SSH server belum jalan:"
86
+ echo " sshd"
87
+ echo ""
88
+
89
+ echo "----------------------------------------"
90
+ info "Setup selesai!"
package/install.sh ADDED
@@ -0,0 +1,44 @@
1
+ #!/data/data/com.termux/files/usr/bin/bash
2
+ #
3
+ # termux-connecting — Installer via curl
4
+ # Usage: curl -fsSL https://raw.githubusercontent.com/Ariska138/termux-connecting/main/install.sh | bash
5
+
6
+ set -e
7
+
8
+ REPO="https://github.com/Ariska138/termux-connecting"
9
+ INSTALL_DIR="$HOME/.termux-connecting"
10
+ BIN_DIR="$PREFIX/bin"
11
+
12
+ echo "━━━ TERMUX CONNECTING — Installer ━━━"
13
+ echo ""
14
+
15
+ # Cek apakah di Termux
16
+ if [ ! -d "$PREFIX" ]; then
17
+ echo "[✗] Script ini harus dijalankan di Termux."
18
+ exit 1
19
+ fi
20
+
21
+ # Cek & install git
22
+ if ! command -v git; then
23
+ echo "[*] Git belum terinstall. Install dulu..."
24
+ pkg install -y git
25
+ fi
26
+
27
+ # Clone atau pull repo
28
+ if [ -d "$INSTALL_DIR" ]; then
29
+ echo "[*] Update repo yang sudah ada..."
30
+ cd "$INSTALL_DIR" && git pull
31
+ else
32
+ echo "[*] Clone repo..."
33
+ timeout 120 git clone --depth 1 "$REPO.git" "$INSTALL_DIR"
34
+ fi
35
+
36
+ # Buat symlink ke PATH
37
+ ln -sf "$INSTALL_DIR/bin/termux-connecting" "$BIN_DIR/termux-connecting"
38
+ chmod +x "$INSTALL_DIR/bin/termux-connecting"
39
+
40
+ echo ""
41
+ echo "[✓] Installasi selesai!"
42
+ echo ""
43
+ echo " Jalankan: termux-connecting"
44
+ echo ""
package/package.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "termux-connecting",
3
+ "version": "1.0.0",
4
+ "description": "CLI setup Termux + koneksi SSH dari PC/Mac dengan Telegram alert",
5
+ "bin": {
6
+ "termux-connecting": "./bin/termux-connecting",
7
+ "termux-connect-pc": "./bin/termux-connect-pc"
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/Ariska138/termux-connecting.git"
12
+ },
13
+ "keywords": ["termux", "android", "ssh", "setup", "terminal"],
14
+ "license": "MIT",
15
+ "author": "Ariska138",
16
+ "files": ["bin/", "install.sh", "README.md"],
17
+ "engines": {
18
+ "node": ">=12"
19
+ }
20
+ }