-
-
Save aladagemre/4eb4aff4b83298bc3312da134064e9d2 to your computer and use it in GitHub Desktop.
paket-kontrol.sh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Compromised NPM Packages Checker | |
# Bu script compromised npm paketlerini projelerinizde arar ve rapor oluşturur | |
# Compromised paketler listesi | |
COMPROMISED_PACKAGES=( | |
"ansi-styles" | |
"debug" | |
"backslash" | |
"chalk-template" | |
"supports-hyperlinks" | |
"has-ansi" | |
"simple-swizzle" | |
"color-string" | |
"error-ex" | |
"color-name" | |
"is-arrayish" | |
"slice-ansi" | |
"color-convert" | |
"wrap-ansi" | |
"ansi-regex" | |
"supports-color" | |
"strip-ansi" | |
"chalk" | |
) | |
# Renk kodları | |
RED='\033[0;31m' | |
GREEN='\033[0;32m' | |
YELLOW='\033[1;33m' | |
BLUE='\033[0;34m' | |
NC='\033[0m' # No Color | |
# Fonksiyonlar | |
print_header() { | |
echo -e "${BLUE}=================================${NC}" | |
echo -e "${BLUE} COMPROMISED PACKAGES CHECKER ${NC}" | |
echo -e "${BLUE}=================================${NC}" | |
echo "" | |
} | |
print_package_list() { | |
echo -e "${YELLOW}Aranan compromised paketler:${NC}" | |
for pkg in "${COMPROMISED_PACKAGES[@]}"; do | |
echo " - $pkg" | |
done | |
echo "" | |
} | |
check_project() { | |
local project_dir="$1" | |
local project_name=$(basename "$project_dir") | |
local found_packages=() | |
# Package-lock.json var mı kontrol et | |
local lock_file="$project_dir/package-lock.json" | |
local lock_date="bilinmiyor" | |
if [ -f "$lock_file" ]; then | |
lock_date=$(stat -f "%Sm" "$lock_file" 2>/dev/null || echo "bilinmiyor") | |
fi | |
# Her paketi kontrol et | |
for pkg in "${COMPROMISED_PACKAGES[@]}"; do | |
if [ -d "$project_dir/node_modules/$pkg" ]; then | |
local version="bilinmiyor" | |
if [ -f "$project_dir/node_modules/$pkg/package.json" ]; then | |
version=$(grep '"version"' "$project_dir/node_modules/$pkg/package.json" | head -1 | sed 's/.*": "//;s/".*//') | |
fi | |
found_packages+=("$pkg:$version") | |
fi | |
done | |
# Bulunan paketler varsa rapor et | |
if [ ${#found_packages[@]} -gt 0 ]; then | |
echo -e "${RED}PROJE: $project_name${NC}" | |
echo -e "${BLUE}Yol: $project_dir${NC}" | |
echo -e "${GREEN}Son güncelleme: $lock_date${NC}" | |
echo -e "${YELLOW}Bulunan compromised paketler:${NC}" | |
for pkg_info in "${found_packages[@]}"; do | |
local pkg_name=$(echo "$pkg_info" | cut -d: -f1) | |
local pkg_version=$(echo "$pkg_info" | cut -d: -f2) | |
echo " ✗ $pkg_name (v$pkg_version)" | |
done | |
echo "" | |
return 1 # Compromised paket bulundu | |
fi | |
return 0 # Temiz proje | |
} | |
# Ana fonksiyon | |
main() { | |
local search_dir="${1:-$(pwd)}" | |
local total_projects=0 | |
local compromised_projects=0 | |
print_header | |
print_package_list | |
echo -e "${BLUE}Arama dizini: $search_dir${NC}" | |
echo "" | |
# Package.json dosyalarını bul (node_modules hariç) | |
local package_files | |
mapfile -t package_files < <(find "$search_dir" -maxdepth 4 -name "package.json" -not -path "*/node_modules/*" -not -path "*/.next/*" 2>/dev/null) | |
echo -e "${YELLOW}Bulunan proje sayısı: ${#package_files[@]}${NC}" | |
echo "" | |
# Her projeyi kontrol et | |
for package_file in "${package_files[@]}"; do | |
if [ -f "$package_file" ]; then | |
local project_dir=$(dirname "$package_file") | |
# Sadece node_modules klasörü olan projeleri kontrol et | |
if [ -d "$project_dir/node_modules" ]; then | |
((total_projects++)) | |
if ! check_project "$project_dir"; then | |
((compromised_projects++)) | |
fi | |
fi | |
fi | |
done | |
# Özet rapor | |
echo -e "${BLUE}=================================${NC}" | |
echo -e "${BLUE} ÖZET RAPOR ${NC}" | |
echo -e "${BLUE}=================================${NC}" | |
echo -e "${GREEN}Kontrol edilen toplam proje: $total_projects${NC}" | |
echo -e "${RED}Compromised paket bulunan proje: $compromised_projects${NC}" | |
if [ $compromised_projects -eq 0 ]; then | |
echo -e "${GREEN}✓ Hiçbir projede compromised paket bulunamadı!${NC}" | |
else | |
echo -e "${YELLOW}⚠ $compromised_projects proje güncelleme gerektirebilir${NC}" | |
fi | |
echo "" | |
echo -e "${YELLOW}Not: Bu paketler çoğu Node.js projesinde dolaylı bağımlılık olarak bulunur.${NC}" | |
echo -e "${YELLOW}Güncellemeler için: npm audit fix veya npm update komutlarını kullanabilirsiniz.${NC}" | |
} | |
# Script çalıştırılışı | |
if [ "${BASH_SOURCE[0]}" == "${0}" ]; then | |
main "$@" | |
fi% |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment