Welcome to mirror list, hosted at ThFree Co, Russian Federation.

code.py « dns « expansions - github.com/alkorgun/blacksmith-2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: d7b618ad628ded02a16233a2931d7b951369632b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# coding: utf-8

#  BlackSmith mark.2
# exp_name = "dns" # /code.py v.x2
#  Id: 34~2c
#  Code © (2012-2013) by WitcherGeralt [alkorgun@gmail.com]

class expansion_temp(expansion):

	def __init__(self, name):
		expansion.__init__(self, name)

	import socket

	def command_dns(self, stype, source, adress, disp):
		if adress:
			try:
				name, alias, addrs = self.socket.gethostbyaddr(adress.encode("idna"))
			except self.socket.error:
				answer = AnsBase[7]
			else:
				addrs.insert(0, name)
				answer = ", ".join(addrs)
		else:
			answer = AnsBase[1]
		Answer(answer, stype, source, disp)

	def command_port(self, stype, source, adress, disp):
		if adress:
			adress = adress.split()
			if len(adress) == 2:
				host, port = adress
				if port.isdigit():
					server = (host.encode("idna"), int(port))
					if ":" in host:
						flag = self.socket.AF_INET6
						server = server.__add__((0, 0))
						host = host.join(("[", "]"))
					else:
						flag = self.socket.AF_INET
					sock = self.socket.socket(flag, self.socket.SOCK_STREAM)
					sock.settimeout(6)
					try:
						sock.connect(server)
					except:
						answer = "{0}:{1} is closed.".format(host, port)
					else:
						answer = "{0}:{1} is opened.".format(host, port)
					finally:
						sock.close()
				else:
					answer = AnsBase[30]
			else:
				answer = AnsBase[2]
		else:
			answer = AnsBase[1]
		Answer(answer, stype, source, disp)

	commands = (
		(command_dns, "dns", 1,),
		(command_port, "port", 1,)
	)