karnel-termux 4.17.2 → 4.17.3

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 +1 @@
1
- 680f9d3f783c6f2bf95e4499c3e230d2d25b7070
1
+ 5b88c3c7229d293e0e92665c71bcb3501a87ed74
@@ -83,6 +83,20 @@ _cline_install_global_impl() {
83
83
  return 1
84
84
  fi
85
85
 
86
+ local expected actual
87
+ expected=$(npm view "@cline/cli-linux-arm64@$version" dist.integrity 2>/dev/null)
88
+ if [[ -z "$expected" ]]; then
89
+ rm -f "$tarball"
90
+ log_error "Falha ao obter a integridade do binário do Cline no registry npm"
91
+ return 1
92
+ fi
93
+ actual=$(node -e 'const c=require("crypto");const h=c.createHash("sha512");h.update(require("fs").readFileSync(process.argv[1]));process.stdout.write("sha512-"+h.digest("base64"))' "$tarball" 2>/dev/null) || actual=""
94
+ if [[ "$actual" != "$expected" ]]; then
95
+ rm -f "$tarball"
96
+ log_error "Integridade do binário do Cline não confere (esperado $expected)"
97
+ return 1
98
+ fi
99
+
86
100
  mkdir -p "$CLINE_DATA_DIR"
87
101
  : >"$CLINE_DATA_DIR/$CLINE_MARKER"
88
102
  if ! tar -xzf "$tarball" -C "$CLINE_DATA_DIR" &>>"$LOG_FILE"; then
@@ -485,9 +485,15 @@ _update_kimchi_proot_impl() {
485
485
 
486
486
  local download_url="https://github.com/getkimchi/kimchi/releases/download/$latest_version/kimchi_linux_arm64.tar.gz"
487
487
 
488
- _kimchi_proot_ubuntu /bin/bash -c "
488
+ local expected
489
+ expected=$(github_release_asset_sha256 getkimchi/kimchi "$latest_version" "kimchi_linux_arm64.tar.gz") || expected=""
490
+ if [[ ! "$expected" =~ ^[0-9a-f]{64}$ ]]; then
491
+ log_warn "No published SHA-256 for Kimchi; skipping integrity verification"
492
+ fi
493
+ _kimchi_proot_ubuntu /bin/bash -c '
489
494
  mkdir -p /tmp/kimchi-install &&
490
- curl -fsSL '$download_url' -o /tmp/kimchi-install/kimchi.tar.gz &&
495
+ curl -fsSL "$1" -o /tmp/kimchi-install/kimchi.tar.gz &&
496
+ { [ -z "$2" ] || [ "$(sha256sum /tmp/kimchi-install/kimchi.tar.gz | awk "{print \$1}")" = "$2" ]; } &&
491
497
  tar -zxf /tmp/kimchi-install/kimchi.tar.gz -C /tmp/kimchi-install &&
492
498
  rm -f /usr/local/bin/kimchi &&
493
499
  mv /tmp/kimchi-install/bin/kimchi /usr/local/bin/kimchi &&
@@ -495,7 +501,7 @@ _update_kimchi_proot_impl() {
495
501
  rm -rf /usr/local/share/kimchi &&
496
502
  mv /tmp/kimchi-install/share/kimchi /usr/local/share/kimchi &&
497
503
  rm -rf /tmp/kimchi-install
498
- " &>>"$LOG_FILE"
504
+ ' bash "$download_url" "$expected" &>>"$LOG_FILE"
499
505
 
500
506
  local kimchi_bin
501
507
  kimchi_bin="$(_kimchi_detect_ubuntu_root)/usr/local/bin/kimchi"
@@ -39,6 +39,17 @@ _install_deps_impl() {
39
39
  fi
40
40
  done
41
41
 
42
+ if [[ ! -f "$GLIBC_LIBDIR/ld-linux-aarch64.so.1" ]]; then
43
+ if ! yes | pkg install glibc-repo &>>"$LOG_FILE"; then
44
+ log_error "Failed to install glibc-repo"
45
+ return 1
46
+ fi
47
+ if ! yes | pkg install glibc &>>"$LOG_FILE"; then
48
+ log_error "Failed to install glibc (required by the glibc-linked Node.js)"
49
+ return 1
50
+ fi
51
+ fi
52
+
42
53
  return 0
43
54
  }
44
55
 
@@ -14,6 +14,10 @@ install_dnsrecon() {
14
14
  log_success "dnsrecon instalado"
15
15
  return 0
16
16
  fi
17
+ command -v git >/dev/null 2>&1 || pkg install -y git >/dev/null 2>&1 || {
18
+ log_error "git é necessário para instalar o dnsrecon via repositório"
19
+ return 1
20
+ }
17
21
  if install_pinned_git_repo "$_DNSRECON_REPO" "$_DNSRECON_COMMIT" "$_DNSRECON_DIR"; then
18
22
  pip install -r "$_DNSRECON_DIR/requirements.txt" 2>/dev/null
19
23
  chmod +x "$_DNSRECON_DIR/dnsrecon.py"
@@ -14,6 +14,10 @@ install_enum4linux() {
14
14
  log_success "enum4linux instalado"
15
15
  return 0
16
16
  fi
17
+ command -v git >/dev/null 2>&1 || pkg install -y git >/dev/null 2>&1 || {
18
+ log_error "git é necessário para instalar o enum4linux via repositório"
19
+ return 1
20
+ }
17
21
  if install_pinned_git_repo "$_ENUM4LINUX_REPO" "$_ENUM4LINUX_COMMIT" "$_ENUM4LINUX_DIR"; then
18
22
  chmod +x "$_ENUM4LINUX_DIR/enum4linux.pl"
19
23
  ln -sf "$_ENUM4LINUX_DIR/enum4linux.pl" "$PREFIX/bin/enum4linux"
@@ -46,9 +46,9 @@ update_masscan() {
46
46
  _pinned_git_repo_owned "$_MASSCAN_DIR" "$_MASSCAN_REPO" ||
47
47
  { [ -f "$_MASSCAN_DIR/.karnel-wrapper" ] && _adopt_pinned_git_repo "$_MASSCAN_DIR" "$_MASSCAN_REPO"; } || return 1
48
48
  install_pinned_git_repo "$_MASSCAN_REPO" "$_MASSCAN_COMMIT" "$_MASSCAN_DIR" || return 1
49
- make -C "$_MASSCAN_DIR" -j4 2>/dev/null
50
- install -m 755 "$_MASSCAN_DIR/bin/masscan" "$PREFIX/bin/masscan"
51
- sha256sum "$PREFIX/bin/masscan" > "$_MASSCAN_DIR/.karnel-wrapper"
49
+ make -C "$_MASSCAN_DIR" -j4 2>/dev/null || return 1
50
+ install -m 755 "$_MASSCAN_DIR/bin/masscan" "$PREFIX/bin/masscan" || return 1
51
+ sha256sum "$PREFIX/bin/masscan" > "$_MASSCAN_DIR/.karnel-wrapper" || return 1
52
52
  log_success "masscan atualizado"
53
53
  return 0
54
54
  fi
@@ -14,6 +14,10 @@ install_nikto() {
14
14
  log_success "nikto instalado"
15
15
  return 0
16
16
  fi
17
+ command -v git >/dev/null 2>&1 || pkg install -y git >/dev/null 2>&1 || {
18
+ log_error "git é necessário para instalar o nikto via repositório"
19
+ return 1
20
+ }
17
21
  if install_pinned_git_repo "$_NIKTO_REPO" "$_NIKTO_COMMIT" "$_NIKTO_DIR"; then
18
22
  ln -sf "$_NIKTO_DIR/program/nikto.pl" "$PREFIX/bin/nikto"
19
23
  chmod +x "$PREFIX/bin/nikto"
@@ -14,6 +14,10 @@ install_sqlmap() {
14
14
  log_success "sqlmap instalado"
15
15
  return 0
16
16
  fi
17
+ command -v git >/dev/null 2>&1 || pkg install -y git >/dev/null 2>&1 || {
18
+ log_error "git é necessário para instalar o sqlmap via repositório"
19
+ return 1
20
+ }
17
21
  if install_pinned_git_repo "$_SQLMAP_REPO" "$_SQLMAP_COMMIT" "$_SQLMAP_DIR"; then
18
22
  ln -sf "$_SQLMAP_DIR/sqlmap.py" "$PREFIX/bin/sqlmap"
19
23
  chmod +x "$PREFIX/bin/sqlmap"
@@ -14,6 +14,10 @@ install_theharvester() {
14
14
  log_success "theharvester instalado"
15
15
  return 0
16
16
  fi
17
+ command -v git >/dev/null 2>&1 || pkg install -y git >/dev/null 2>&1 || {
18
+ log_error "git é necessário para instalar o theharvester via repositório"
19
+ return 1
20
+ }
17
21
  if install_pinned_git_repo "$_THEHARVESTER_REPO" "$_THEHARVESTER_COMMIT" "$_THEHARVESTER_DIR"; then
18
22
  pip install -r "$_THEHARVESTER_DIR/requirements/base.txt" 2>/dev/null
19
23
  chmod +x "$_THEHARVESTER_DIR/theHarvester.py"
@@ -14,6 +14,10 @@ install_whatweb() {
14
14
  log_success "whatweb instalado"
15
15
  return 0
16
16
  fi
17
+ command -v git >/dev/null 2>&1 || pkg install -y git >/dev/null 2>&1 || {
18
+ log_error "git é necessário para instalar o whatweb via repositório"
19
+ return 1
20
+ }
17
21
  if install_pinned_git_repo "$_WHATWEB_REPO" "$_WHATWEB_COMMIT" "$_WHATWEB_DIR"; then
18
22
  ln -sf "$_WHATWEB_DIR/whatweb" "$PREFIX/bin/whatweb"
19
23
  chmod +x "$PREFIX/bin/whatweb"
@@ -366,6 +366,11 @@ agent_apply_files() {
366
366
  d=$(agent_md_dir)
367
367
  fm="$d/actions_files_manifest.txt"
368
368
  ws="${AGENT_ACTIONS_WORKSPACE:-$PWD}"
369
+ ws="$(realpath -m "$ws" 2>/dev/null)" || ws=""
370
+ if [[ -z "$ws" || "$ws" == "/" ]]; then
371
+ log_error "Recusando aplicar arquivos com workspace '/' (permitiria escrita em qualquer lugar)"
372
+ return 1
373
+ fi
369
374
  AGENT_FILES_WRITTEN=0
370
375
  shown=0
371
376
  # paths attached as action="no-read" are write-protected for this task
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "karnel-termux",
3
- "version": "4.17.2",
3
+ "version": "4.17.3",
4
4
  "description": "Modular Dev Environment for Termux — install languages, databases, AI agents, editors, and more with one command",
5
5
  "bin": {
6
6
  "karnel": "karnel/bin/karnel"