diff --git a/external/bin/MD5SUM b/external/bin/MD5SUM index 4f146a1..25bc80a 100644 --- a/external/bin/MD5SUM +++ b/external/bin/MD5SUM @@ -1 +1 @@ -34db7ab1ec383bb6d9b8290e637bff96 \ No newline at end of file +2dc2bf976cc7f7e4290393be391d9eb4 \ No newline at end of file diff --git a/external/bin/linusware b/external/bin/linusware deleted file mode 100644 index 0b427b0..0000000 Binary files a/external/bin/linusware and /dev/null differ diff --git a/external/bin/linusware.tar.gz b/external/bin/linusware.tar.gz new file mode 100644 index 0000000..0fae52b Binary files /dev/null and b/external/bin/linusware.tar.gz differ diff --git a/external/status.json b/external/status.json index 50c8c06..d4a46de 100644 --- a/external/status.json +++ b/external/status.json @@ -1,5 +1,5 @@ { - "version": "0.6.0", + "version": "0.7.0", "updated": true, - "log": "Way better chams\nbetter credits\nBlocked LMB from aimbot bind\nRescan Sober button\nbetter credits\nfixed overflow crash\nperformance fix" + "log": "added menu and overlay in egui\nadded: panic key\nadded: hyprland support\n \n\n fixed: fov follows mouse drifting in shiftlock\n fixed: fov override flickering between game fov and custom fov\n fixed: esp not rendering on multiple monitors. (unverified)\n\n fixed: aimbot not switching targets after a kill without releasing the key\n fixed: aimbot staying locked on a target outside max range\n fixed: fov follows mouse not working" } \ No newline at end of file diff --git a/install.sh b/install.sh index d786536..155624d 100755 --- a/install.sh +++ b/install.sh @@ -19,13 +19,13 @@ error() { echo -e "${RED}[x]${NC} $1" exit 1 } - command -v curl >/dev/null 2>&1 || error "curl is required" command -v md5sum >/dev/null 2>&1 || error "md5sum is required" +command -v tar >/dev/null 2>&1 || error "tar is required" mkdir -p "${INSTALL_DIR}/external" "${INSTALL_DIR}/internal" -download_bin() { +download() { local url="$1" dest="$2" local tmp; tmp="$(mktemp)" curl -fsSL -o "$tmp" "$url" || { rm -f "$tmp"; return 1; } @@ -36,12 +36,10 @@ install_edition() { local edition="$1" local status_url="${BASE_URL}/${edition}/status.json" local status_file="${INSTALL_DIR}/${edition}/status.json" - local bin_dir="${INSTALL_DIR}/${edition}/linusware" - local bin_path="${bin_dir}/linusware" info "Checking ${edition} edition..." - download_bin "$status_url" "$status_file" || { + download "$status_url" "$status_file" || { warn "Could not fetch status.json for ${edition}, skipping" return } @@ -59,37 +57,40 @@ install_edition() { local md5_url="${BASE_URL}/${edition}/bin/MD5SUM" local md5_file; md5_file="$(mktemp)" - download_bin "$md5_url" "$md5_file" || { + download "$md5_url" "$md5_file" || { rm -f "$md5_file" warn "Could not fetch MD5SUM for ${edition}" return } - local expected_hash; expected_hash=$(tr -cd '[:xdigit:]' < "$md5_file"); rm -f "$md5_file" + local expected_hash + expected_hash=$(tr -cd '[:xdigit:]' < "$md5_file"); rm -f "$md5_file" - local bin_url="${BASE_URL}/${edition}/bin/linusware" - local tmp_bin; tmp_bin="$(mktemp)" - download_bin "$bin_url" "$tmp_bin" || { - rm -f "$tmp_bin" - error "Failed to download ${edition} binary" + local archive_url="${BASE_URL}/${edition}/bin/linusware.tar.gz" + local tmp_archive; tmp_archive="$(mktemp)" + download "$archive_url" "$tmp_archive" || { + rm -f "$tmp_archive" + error "Failed to download ${edition} archive" } local actual_hash - actual_hash=$(md5sum "$tmp_bin" | cut -d' ' -f1) + actual_hash=$(md5sum "$tmp_archive" | cut -d' ' -f1) if [ "$actual_hash" != "$expected_hash" ]; then - rm -f "$tmp_bin" + rm -f "$tmp_archive" error "MD5 mismatch for ${edition} (expected ${expected_hash}, got ${actual_hash})" fi - mkdir -p "$bin_dir" - mv "$tmp_bin" "$bin_path" - chmod +x "$bin_path" + rm -rf "${INSTALL_DIR}/${edition}/linusware" + tar -xzf "$tmp_archive" -C "${INSTALL_DIR}/${edition}" + rm -f "$tmp_archive" + + local run_path="${INSTALL_DIR}/${edition}/linusware/run.sh" + chmod +x "$run_path" echo "$version" > "${INSTALL_DIR}/${edition}/version.txt" info "${edition} v${version} installed successfully" } # main - info "Installing LinusWare to ${INSTALL_DIR}" echo "" @@ -97,8 +98,8 @@ install_edition external install_edition internal info "Downloading launcher and updater..." -download_bin "${BASE_URL}/launcher.sh" "${INSTALL_DIR}/launcher.sh" -download_bin "${BASE_URL}/update.sh" "${INSTALL_DIR}/update.sh" +download "${BASE_URL}/launcher.sh" "${INSTALL_DIR}/launcher.sh" +download "${BASE_URL}/update.sh" "${INSTALL_DIR}/update.sh" chmod +x "${INSTALL_DIR}/launcher.sh" "${INSTALL_DIR}/update.sh" echo "" diff --git a/launcher.sh b/launcher.sh index 7eb04d9..3ba37b9 100755 --- a/launcher.sh +++ b/launcher.sh @@ -6,15 +6,14 @@ YELLOW='\033[1;33m' CYAN='\033[0;36m' NC='\033[0m' -# discover bins declare -a editions edition_names for dir in "${INSTALL_DIR}"/*/; do [ -d "$dir" ] || continue edition=$(basename "$dir") - bin="${dir}/linusware/linusware" - if [ -f "$bin" ] && [ -x "$bin" ]; then + run="${dir}/linusware/run.sh" + if [ -f "$run" ] && [ -x "$run" ]; then edition_names+=("$edition") - editions+=("$bin") + editions+=("$run") fi done @@ -55,12 +54,12 @@ if command -v whiptail >/dev/null 2>&1; then choice=$(whiptail --title "LinusWare Launcher" \ --menu "Select an edition to launch:" \ 15 55 5 "${menu_items[@]}" \ - 3>&1 1>&2 2>&3) || choice="Q" + 3>&1 1>&2 2>&3) || choice="q" case "$choice" in u) run_updater;; q|"") exit 0;; - *) [[ "$choice" =~ ^[0-9]+$ ]] && exec sudo "${editions[$((choice-1))]}" ;; + *) [[ "$choice" =~ ^[0-9]+$ ]] && exec "${editions[$((choice-1))]}" ;; esac done fi @@ -85,7 +84,7 @@ while true; do if [[ "$choice" =~ ^[0-9]+$ ]] && \ [ "$choice" -ge 1 ] && \ [ "$choice" -le "${#editions[@]}" ]; then - exec sudo "${editions[$((choice-1))]}" + exec "${editions[$((choice-1))]}" else echo -e "${RED}Invalid choice${NC}" fi diff --git a/update.sh b/update.sh index 0cfb44a..21e0e98 100755 --- a/update.sh +++ b/update.sh @@ -19,8 +19,9 @@ error() { echo -e "${RED}[x]${NC} $1" } -command -v curl >/dev/null 2>&1 || { error "curl is required"; exit 1; } +command -v curl >/dev/null 2>&1 || { error "curl is required"; exit 1; } command -v md5sum >/dev/null 2>&1 || { error "md5sum is required"; exit 1; } +command -v tar >/dev/null 2>&1 || { error "tar is required"; exit 1; } download() { local url="$1" dest="$2" @@ -31,10 +32,10 @@ download() { update_edition() { local edition="$1" - local bin_path="${INSTALL_DIR}/${edition}/linusware/linusware" + local run_path="${INSTALL_DIR}/${edition}/linusware/run.sh" local ver_file="${INSTALL_DIR}/${edition}/version.txt" - [ -f "$bin_path" ] || return + [ -f "$run_path" ] || return local cur_ver="" [ -f "$ver_file" ] && cur_ver=$(cat "$ver_file") @@ -69,25 +70,30 @@ update_edition() { warn "${edition}: could not fetch MD5SUM" return fi - local expected_hash; expected_hash=$(tr -cd '[:xdigit:]' < "$md5_file"); rm -f "$md5_file" + local expected_hash + expected_hash=$(tr -cd '[:xdigit:]' < "$md5_file"); rm -f "$md5_file" - local tmp_bin; tmp_bin="$(mktemp)" - if ! download "${BASE_URL}/${edition}/bin/linusware" "$tmp_bin"; then - rm -f "$tmp_bin" + local tmp_archive; tmp_archive="$(mktemp)" + if ! download "${BASE_URL}/${edition}/bin/linusware.tar.gz" "$tmp_archive"; then + rm -f "$tmp_archive" warn "${edition}: download failed" return fi local actual_hash - actual_hash=$(md5sum "$tmp_bin" | cut -d' ' -f1) + actual_hash=$(md5sum "$tmp_archive" | cut -d' ' -f1) if [ "$actual_hash" != "$expected_hash" ]; then - rm -f "$tmp_bin" + rm -f "$tmp_archive" error "${edition}: MD5 mismatch" return fi - mv "$tmp_bin" "$bin_path" - chmod +x "$bin_path" + rm -rf "${INSTALL_DIR}/${edition}/linusware" + tar -xzf "$tmp_archive" -C "${INSTALL_DIR}/${edition}" + rm -f "$tmp_archive" + + local new_run="${INSTALL_DIR}/${edition}/linusware/run.sh" + chmod +x "$new_run" echo "$remote_ver" > "$ver_file" info "${edition}: updated to v${remote_ver}" }