Advertisement
Guest User

Untitled

a guest
Mar 24th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.87 KB | None | 0 0
  1. def ruleLine(line,counter):
  2. #<direction> <action> <ip> <port> [flag]
  3. split = line.split("#")[0].strip().lower().split(" ")
  4. length = len(split)
  5. returner = ""
  6. test = 0
  7. count = str(counter)
  8. if line[0] == '#':
  9. return ""
  10. elif length not in range(4,6):
  11. print(split)
  12. sys.stderr.write("Line " + count + ": Invalid rule, Ignoring Line\n")
  13. return ""
  14. else:
  15. direction = split[0]
  16. if direction not in {"in", "out"}:
  17. sys.stderr.write("Line " + count + ": Invalid Direction, Ignoring Line\n")
  18. return ""
  19. returner = direction + " "
  20. #------------------------------
  21. action = split[1]
  22. if action not in {"accept", "deny"}:
  23. sys.stderr.write("Line " + count + ": Invalid action, Ignoring Line\n")
  24. return ""
  25. returner = action + " "
  26. #------------------------------
  27. iprange = split[2].split("/")
  28. if len(iprange) > 2:
  29. sys.stderr.write("Line " + count + ": Invalid CIDR Notation, Ignoring Line\n")
  30. return ""
  31. elif (iprange[0] == "*"):
  32. returner = returner + "* "
  33. elif len(iprange) == 2:
  34. try:
  35. iprangeint = int(iprange[1])
  36. except:
  37. sys.stderr.write("Line " + count + ": Accepts IPv4 format only, Ignoring Line\n")
  38. return ""
  39. if (iprangeint < 0 or iprangeint > 32):
  40. sys.stderr.write("Line " + count + ": Invalid IP Range, Ignoring Line\n")
  41. return ""
  42. elif (iprangeint == 0):
  43. returner = returner + "* "
  44. else:
  45. ip4 = iprange[0].split(".")
  46. if (len(ip4) != 4):
  47. sys.stderr.write("Line " + count + ": Invalid IP Format, Ignoring Line\n")
  48. return ""
  49. else:
  50. ip4 = iprange[0].split(".")
  51. if (len(ip4) != 4):
  52. sys.stderr.write("Line " + count + ": Invalid IP Format, Ignoring Line\n")
  53. return ""
  54. else:
  55. try:
  56. i = 0
  57. while (i < (iprangeint // 8)):
  58. returner = returner + "{0:08b}".format(int(ip4[i]))
  59. i = i+1
  60. j = iprangeint % 8
  61. if (j != 0):
  62. returner = returner + "{0:08b}".format(int(ip4[i]))[:j] + " "
  63. else:
  64. returner = returner + " "
  65. except:
  66. sys.stderr.write(asdasd + "Line " + count + ": Accepts IPv4 format only2, Ignoring Line\n")
  67. return ""
  68. #------------------------------
  69. try:
  70. ports = split[3].split(",")
  71. if (split[3] == "*"):
  72. pass
  73. else:
  74. for port in ports:
  75. test = int(port)
  76. if test not in range(0, 65536):
  77. sys.stderr.write("Line " + count + ": " + str(test) + " is not a valid port number, Ignoring Line\n")
  78. return ""
  79. except:
  80. sys.stderr.write("Line " + count + ": Supplied port not a number, Ignoring Line\n")
  81. return ""
  82. returner = returner + split[3] + " "
  83. #------------------------------
  84. if (length == 5):
  85. if (split[4] != "established"):
  86. sys.stderr.write("Line " + count + ": Invalid Flag, Ignoring Line\n")
  87. return ""
  88. returner = returner + split[4]
  89. return returner
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement