ros6_functions.sh 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. #!/bin/bash
  2. # Импорт общих функций
  3. source "$(dirname "$0")/functions.sh"
  4. # Функция загрузки ROS 6
  5. download_ros6() {
  6. local force=$1
  7. log "Checking ROS 6 releases"
  8. # Get upgrade version to ROS 7
  9. $WGET $WGET_OPTS "http://upgrade.mikrotik.com/routeros/NEWEST6.upgrade?version=6.49.13" -O "${TARGET_DIR}/NEWEST6.upgrade"
  10. check_error $? "Failed to download NEWEST6.upgrade"
  11. for firmware_version in "${versions6[@]}"; do
  12. log "Analyzing version ${firmware_version}"
  13. [ -e "${TARGET_DIR}/LATEST.${firmware_version}.new" ] && rm -f "${TARGET_DIR}/LATEST.${firmware_version}.new"
  14. $WGET $WGET_OPTS "http://upgrade.mikrotik.com/routeros/LATEST.${firmware_version}" -O "${TARGET_DIR}/LATEST.${firmware_version}.new"
  15. if ! check_error $? "Failed to get LATEST.${firmware_version}"; then
  16. [ -e "${TARGET_DIR}/LATEST.${firmware_version}.new" ] && rm -f "${TARGET_DIR}/LATEST.${firmware_version}.new"
  17. continue
  18. fi
  19. old_version=$(head -1 "${TARGET_DIR}/LATEST.${firmware_version}" 2>/dev/null | awk '{print $1}')
  20. old_timestamp=$(head -1 "${TARGET_DIR}/LATEST.${firmware_version}" 2>/dev/null | awk '{print $2}')
  21. old_release_date=$(date -d @${old_timestamp} 2>/dev/null || echo "unknown")
  22. new_version=$(head -1 "${TARGET_DIR}/LATEST.${firmware_version}.new" | awk '{print $1}')
  23. new_timestamp=$(head -1 "${TARGET_DIR}/LATEST.${firmware_version}.new" | awk '{print $2}')
  24. new_release_date=$(date -d @${new_timestamp} 2>/dev/null || echo "unknown")
  25. log "Latest release: ${new_version}"
  26. version_changed=1
  27. if [ "x${new_version}" = "x${old_version}" ] && [ "x${old_timestamp}" = "x${new_timestamp}" ]; then
  28. version_changed=
  29. fi
  30. if [ "x${force}" = "x" ] && [ "x${version_changed}" = "x" ]; then
  31. log "Current version ${old_version} unchanged. Skipping."
  32. rm -f "${TARGET_DIR}/LATEST.${firmware_version}.new"
  33. continue
  34. fi
  35. log "New version found: ${new_version} from ${new_release_date}"
  36. log "Old version: ${old_version} from ${old_release_date}"
  37. log "Downloading packages..."
  38. mkdir -p "${TARGET_DIR}/${new_version}"
  39. cd "${TARGET_DIR}/${new_version}" || continue
  40. # Download changelog first
  41. $WGET $WGET_OPTS "http://upgrade.mikrotik.com/routeros/${new_version}/CHANGELOG"
  42. if ! check_error $? "Failed to download CHANGELOG for ${new_version}"; then
  43. continue
  44. fi
  45. download_err=
  46. for file_arch in "${firmware_arch[@]}"; do
  47. # Packages
  48. $WGET $WGET_OPTS "http://upgrade.mikrotik.com/routeros/${new_version}/all_packages-${file_arch}-${new_version}.zip"
  49. if ! check_error $? "Failed to download all_packages-${file_arch}-${new_version}.zip"; then
  50. download_err=1
  51. break
  52. fi
  53. # RouterOS
  54. if [ "${file_arch}" = "ppc" ]; then
  55. $WGET $WGET_OPTS "http://upgrade.mikrotik.com/routeros/${new_version}/routeros-powerpc-${new_version}.npk"
  56. else
  57. $WGET $WGET_OPTS "http://upgrade.mikrotik.com/routeros/${new_version}/routeros-${file_arch}-${new_version}.npk"
  58. fi
  59. if ! check_error $? "Failed to download routeros for ${file_arch}"; then
  60. download_err=1
  61. break
  62. fi
  63. done
  64. if [ -n "${download_err}" ]; then
  65. log_error "Download errors for ${new_version}. Skipping release."
  66. rm -f "${TARGET_DIR}/LATEST.${firmware_version}.new"
  67. continue
  68. fi
  69. # Download additional files
  70. download_additional_files "${new_version}"
  71. mv "${TARGET_DIR}/LATEST.${firmware_version}.new" "${TARGET_DIR}/LATEST.${firmware_version}"
  72. log_success "ROS 6 version ${new_version} downloaded successfully."
  73. done
  74. }
  75. # Функция загрузки ROS 6
  76. download_specific_ros6_version() {
  77. local version=$1
  78. log "Downloading specific ROS 6 version: $version"
  79. mkdir -p "${TARGET_DIR}/$version"
  80. cd "${TARGET_DIR}/${version}" || return 1
  81. # Download changelog first
  82. $WGET $WGET_OPTS "http://upgrade.mikrotik.com/routeros/${version}/CHANGELOG"
  83. if ! check_error $? "Failed to download CHANGELOG for ${version}"; then
  84. return 1
  85. fi
  86. download_err=
  87. for file_arch in "${firmware_arch[@]}"; do
  88. # Packages
  89. $WGET $WGET_OPTS "http://upgrade.mikrotik.com/routeros/${version}/all_packages-${file_arch}-${version}.zip"
  90. if ! check_error $? "Failed to download all_packages-${file_arch}-${version}.zip"; then
  91. download_err=1
  92. break
  93. fi
  94. # RouterOS
  95. if [ "${file_arch}" = "ppc" ]; then
  96. $WGET $WGET_OPTS "http://upgrade.mikrotik.com/routeros/${version}/routeros-powerpc-${version}.npk"
  97. else
  98. $WGET $WGET_OPTS "http://upgrade.mikrotik.com/routeros/${version}/routeros-${file_arch}-${version}.npk"
  99. fi
  100. if ! check_error $? "Failed to download routeros for ${file_arch}"; then
  101. download_err=1
  102. break
  103. fi
  104. done
  105. if [ -n "${download_err}" ]; then
  106. log_error "Download errors for ${version}. Skipping release."
  107. rm -f "${TARGET_DIR}/LATEST.${firmware_version}.new"
  108. return 1
  109. fi
  110. # Download additional files
  111. download_additional_files "${version}"
  112. log_success "ROS 6 version ${version} downloaded successfully."
  113. }