packages-clean.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. // curl -L http://downloads.openwrt.org/releases/19.07.7/targets/ar71xx/generic/packages/Packages > openwrt_core_packages
  3. // curl -L http://downloads.openwrt.org/releases/19.07.7/packages/mips_24kc/base/Packages > openwrt_base_packages
  4. // curl -L http://downloads.openwrt.org/releases/19.07.7/packages/mips_24kc/packages/Packages > openwrt_packages_packages
  5. function packagesToArray($file_path) {
  6. //return strtok(file_get_contents($file_path), "\n\n");
  7. //return explode("\n\n", file_get_contents($file_path));
  8. return explode('Package: ', file_get_contents($file_path));
  9. }
  10. function generateIndex($file_path) {
  11. $packages = [];
  12. foreach (file($file_path) as $line) {
  13. $clean = trim($line);
  14. if (!empty($clean) && strpos($clean, 'Package: ') !== false) {
  15. $filename = trim(str_replace('Package:', '', $clean));
  16. if (!in_array($filename, $packages)) {
  17. $packages[] = $filename;
  18. }
  19. }
  20. }
  21. return $packages;
  22. }
  23. // analysis
  24. $openwrt_base_count = 0;
  25. $openwrt_core_count = 0;
  26. $openwrt_packages_count = 0;
  27. $missing_packages = [];
  28. $packages = generateIndex('packages');
  29. $openwrt_base_packages = generateIndex('openwrt_base_packages');
  30. $openwrt_core_packages = generateIndex('openwrt_core_packages');
  31. $openwrt_packages_packages = generateIndex('openwrt_packages_packages');
  32. foreach ($packages as $key) {
  33. $status = false;
  34. if (in_array($key, $openwrt_base_packages)) {
  35. $status = true;
  36. $openwrt_base_count++;
  37. echo "[!!!] {$key} found in 'openwrt_base_packages'\n";
  38. }
  39. if (in_array($key, $openwrt_core_packages)) {
  40. $status = true;
  41. $openwrt_core_count++;
  42. echo "[!!!] {$key} found in 'openwrt_core_packages'\n";
  43. }
  44. if (in_array($key, $openwrt_packages_packages)) {
  45. $status = true;
  46. $openwrt_packages_count++;
  47. echo "[!!!] {$key} found in 'openwrt_packages_packages'\n";
  48. }
  49. if (!$status) {
  50. $missing_packages[] = $key;
  51. echo "[+] {$key}\n";
  52. }
  53. }
  54. $openwrt_base = count($openwrt_base_packages);
  55. $openwrt_core = count($openwrt_core_packages);
  56. $openwrt_packages = count($openwrt_core_packages);
  57. $missing_packages_count = count($missing_packages);
  58. // generate new package file
  59. $clean_packages = [];
  60. $mk6_packages = packagesToArray('packages');
  61. foreach ($mk6_packages as $key) {
  62. $lines = explode("\n", $key);
  63. //$id = trim(str_replace('Package:', '', $lines[0]));
  64. $id = trim($lines[0]);
  65. if (!empty($id) && in_array($id, $missing_packages)) {
  66. // le vuelvo a sumar el separador
  67. $clean_packages[] = "Package: {$key}";
  68. }
  69. }
  70. // resume
  71. echo "
  72. Resume
  73. ============================
  74. openwrt_base ({$openwrt_base}) : {$openwrt_base_count}
  75. openwrt_core ({$openwrt_core}) : {$openwrt_core_count}
  76. openwrt_packages ({$openwrt_packages}) : {$openwrt_packages_count}
  77. missing packages : {$missing_packages_count}
  78. Packages
  79. ============================
  80. generate 'packages_clean'
  81. ";
  82. file_put_contents('packages_clean', implode('', $clean_packages));
  83. //var_dump($missing_packages);