
# This testcase does not work, because it refers to self.client_data which
# does not exist.
#StartPolicy
#	def config(self):
#		self.permit_unknown_command = TRUE
#		self.request["PROBA"] = (FTP_REQ_POLICY, self.proba)
#		self.request["*"] = (FTP_REQ_ACCEPT)
#		self.response["*","*"] = (FTP_RSP_ACCEPT)
#		# because the proxy does not like invalid ports by default
#		# and the testsystem initiates connections from ports != 20
#		self.strict_port_checking = FALSE
#	def proba(self,command):
#		(tmp,NULL) = split(str(self.client_data),':')
#		self.request_parameter = tmp[8:]
#		return FTP_REQ_ACCEPT
#EndPolicy
#
#S2P: "220 kesz\r\n"
#P2C: "220 kesz\r\n"
#C2P: "USER user\r\n"
#P2S: "USER user\r\n"
#S2P: "230 logged in\r\n"
#P2C: "230 logged in\r\n"
#
#CLIENT_COMMAIP = string.replace(ZTS_CLIENT_IP,".",",")
#C2P: Listen 1280
#C2P: "PORT " %CLIENT_COMMAIP ",5,0\r\n"
#P2S: "PORT " $IP1 "," $IP2 "," $IP3 "," $IP4 "," $PORT1 "," $PORT2 "\r\n"
#S2P: "200 \r\n"
#P2C: "200 \r\n"
#C2P: "RETR utvonal\r\n"
#P2S: "RETR utvonal\r\n"
#S2P: "150 \r\n"
#P2C: "150 \r\n"
#FW_IP = str(IP1)+"."+str(IP2)+"."+str(IP3)+"."+str(IP4)
#FW_PORT = PORT1*256 + PORT2
#S2P: Connect FW_IP FW_PORT
#C2P: Accept
#C2P: "PROBA\r\n"
#P2S: "PROBA " %ZTS_CLIENT_IP "\r\n"
#.
#
# This testcase does not work, because it refers to self.server_data which
# does not exist.
#StartPolicy
#	def config(self):
#		self.permit_unknown_command = TRUE
#		self.request["PROBA"] = (FTP_REQ_POLICY, self.proba)
#		self.response["*","*"] = (FTP_RSP_ACCEPT)
#		self.request["*"] = (FTP_REQ_ACCEPT)
#		self.strict_port_checking = FALSE
#
#	def proba(self,command):
#		(tmp,NULL) = split(str(self.server_data),':')
#		self.request_parameter = tmp[8:]
#		return FTP_REQ_ACCEPT
#EndPolicy
#
#S2P: "220 kesz\r\n"
#P2C: "220 kesz\r\n"
#C2P: "USER user\r\n"
#P2S: "USER user\r\n"
#S2P: "230 logged in\r\n"
#P2C: "230 logged in\r\n"
#
#C2P: "PASV\r\n"
#P2S: "PASV\r\n"
#SERVER_COMMAIP = string.replace(ZTS_SERVER_IP,".",",")
#S2P: Listen 1280
#S2P: "227 (" %SERVER_COMMAIP ",5,0)\r\n"
#P2C: "227 (" $IP1 "," $IP2 "," $IP3 "," $IP4 "," $PORT1 "," $PORT2 ")\r\n"
#FW_IP = str(IP1)+"."+str(IP2)+"."+str(IP3)+"."+str(IP4)
#FW_PORT = PORT1*256 + PORT2
#C2P: "RETR utvonal\r\n"
#P2S: "RETR utvonal\r\n"
#S2P: "150 \r\n"
#P2C: "150 \r\n"
#C2P: Connect FW_IP FW_PORT
#S2P: Accept
#C2P: "PROBA\r\n"
#P2S: "PROBA " %ZTS_SERVER_IP "\r\n"
#.

StartPolicy
	def config(self):
		self.data_port_min = 40500
		self.data_port_max = 40500
		self.response["*","*"] = (FTP_RSP_ACCEPT)
		self.request["*"] = (FTP_REQ_ACCEPT)
		self.strict_port_checking = FALSE
EndPolicy

S2P: "220 kesz\r\n"
P2C: "220 kesz\r\n"
C2P: "USER user\r\n"
P2S: "USER user\r\n"
S2P: "230 logged in\r\n"
P2C: "230 logged in\r\n"

CLIENT_COMMAIP = string.replace(ZTS_CLIENT_IP,".",",")
C2P: Listen 1280
C2P: "PORT " %CLIENT_COMMAIP ",5,0\r\n"
#158*256+52=40500
P2S: "PORT " $IP1 "," $IP2 "," $IP3 "," $IP4 ",158,52\r\n"
.

#data mode
#already tested in testcases.txt

# This testcase does not work, because it refers to self.fw_server_data which
# does not exist.
#StartPolicy
#	def config(self):
#		self.permit_unknown_command = TRUE
#		self.request["PROBA"] = (FTP_REQ_POLICY, self.proba)
#		self.response["*","*"] = (FTP_RSP_ACCEPT)
#		self.request["*"] = (FTP_REQ_ACCEPT)
#		self.strict_port_checking = FALSE
#
#	def proba(self,command):
#		(tmp,NULL) = split(str(self.fw_server_data),':')
#		self.request_parameter = tmp[8:]
#		return FTP_REQ_ACCEPT
#EndPolicy
#
#S2P: "220 kesz\r\n"
#P2C: "220 kesz\r\n"
#C2P: "USER user\r\n"
#P2S: "USER user\r\n"
#S2P: "230 logged in\r\n"
#P2C: "230 logged in\r\n"
#
#CLIENT_COMMAIP = string.replace(ZTS_CLIENT_IP,".",",")
#C2P: Listen 1280
#C2P: "PORT " %CLIENT_COMMAIP ",5,0\r\n"
#P2S: "PORT " $IP1 "," $IP2 "," $IP3 "," $IP4 "," $PORT1 "," $PORT2 "\r\n"
#S2P: "200 \r\n"
#P2C: "200 \r\n"
#C2P: "RETR utvonal\r\n"
#P2S: "RETR utvonal\r\n"
#S2P: "150 \r\n"
#P2C: "150 \r\n"
#FW_IP = str(IP1)+"."+str(IP2)+"."+str(IP3)+"."+str(IP4)
#FW_PORT = PORT1*256 + PORT2
#S2P: Connect FW_IP FW_PORT
#C2P: Accept
#C2P: "PROBA\r\n"
#P2S: "PROBA " %FW_IP "\r\n"
#.

# This testcase does not work, because it refers to self.fw_client_data which
# does not exist.
#StartPolicy
#	def config(self):
#		self.permit_unknown_command = TRUE
#		self.request["PROBA"] = (FTP_REQ_POLICY, self.proba)
#		self.response["*","*"] = (FTP_RSP_ACCEPT)
#		self.request["*"] = (FTP_REQ_ACCEPT)
#		self.strict_port_checking = FALSE
#
#	def proba(self,command):
#		(tmp,NULL) = split(str(self.fw_client_data),':')
#		self.request_parameter = tmp[8:]
#		return FTP_REQ_ACCEPT
#EndPolicy
#
#S2P: "220 kesz\r\n"
#P2C: "220 kesz\r\n"
#C2P: "USER user\r\n"
#P2S: "USER user\r\n"
#S2P: "230 logged in\r\n"
#P2C: "230 logged in\r\n"
#
#C2P: "PASV\r\n"
#P2S: "PASV\r\n"
#SERVER_COMMAIP = string.replace(ZTS_SERVER_IP,".",",")
#S2P: Listen 1280
#S2P: "227 (" %SERVER_COMMAIP ",5,0)\r\n"
#P2C: "227 (" $IP1 "," $IP2 "," $IP3 "," $IP4 "," $PORT1 "," $PORT2 ")\r\n"
#FW_IP = str(IP1)+"."+str(IP2)+"."+str(IP3)+"."+str(IP4)
#FW_PORT = PORT1*256 + PORT2
#C2P: "RETR utvonal\r\n"
#P2S: "RETR utvonal\r\n"
#S2P: "150 \r\n"
#P2C: "150 \r\n"
#C2P: Connect FW_IP FW_PORT
#S2P: Accept
#C2P: "PROBA\r\n"
#P2S: "PROBA " %FW_IP "\r\n"
#.

StartPolicy
	def config(self):
		self.max_line_length = 20
		self.response["*","*"] = (FTP_RSP_ACCEPT)
		self.request["*"] = (FTP_REQ_ACCEPT)
		self.strict_port_checking = FALSE
EndPolicy

S2P: "123 56789012345678901\r\n"
P2S: Disconnect
.

S2P: "123 567890123456789\r\n"
P2S: Disconnect
.

S2P: "123 56789012345678\r\n"
P2C: "123 56789012345678\r\n"
.

StartPolicy
	def config(self):
		self.transparent_mode = FALSE
		self.response["*","*"] = (FTP_RSP_ACCEPT)
		self.request["*"] = (FTP_REQ_ACCEPT)
		self.max_hostname_length = 10
		self.strict_port_checking = FALSE
EndPolicy

P2C: "220-Welcome in Zorp FTP proxy authentication module!\r\n\
 Please authenticate yourself!\r\n\
 Authentication form:\r\n\
   USER <user>@<remote site>\r\n\
   PASS <password>\r\n\
220 \r\n"

C2P: "USER ftp@123456.8.0\r\n"
P2C: "331 Username and host okay, send your password.\r\n"
.

P2C: "220-Welcome in Zorp FTP proxy authentication module!\r\n\
 Please authenticate yourself!\r\n\
 Authentication form:\r\n\
   USER <user>@<remote site>\r\n\
   PASS <password>\r\n\
220 \r\n"

C2P: "USER ftp@123456.8.01\r\n"
P2C: "501 Hostname too long.\r\n"
.

StartPolicy
	def config(self):
		self.permit_unknown_command = FALSE
		self.max_username_length = 5
		self.max_password_length = 5
		self.response["*","*"] = (FTP_RSP_ACCEPT)
		self.request["*"] = (FTP_REQ_ACCEPT)
		self.request["PROBA"] = (FTP_REQ_POLICY, self.proba)
		self.request["PROBA2"] = (FTP_REQ_POLICY, self.proba2)
		self.strict_port_checking = FALSE
	def proba(self,command):
		self.request_parameter = self.password
		return FTP_REQ_ACCEPT
	def proba2(self,command):
		self.request_parameter = self.username
		return FTP_REQ_ACCEPT
EndPolicy

S2P: "220 kesz\r\n"
P2C: "220 kesz\r\n"
C2P: "USER 12345\r\n"
P2S: "USER 12345\r\n"
.

S2P: "220 kesz\r\n"
P2C: "220 kesz\r\n"
C2P: "USER 123456\r\n"
P2C: "501 Username too long.\r\n"
.

S2P: "220 kesz\r\n"
P2C: "220 kesz\r\n"
C2P: "USER 12345\r\n"
P2S: "USER 12345\r\n"
S2P: "331 Send your password\r\n"
P2C: "331 Send your password\r\n"
C2P: "PASS 67890\r\n"
P2S: "PASS 67890\r\n"
S2P: "230 Access granted\r\n"
P2C: "230 Access granted\r\n"
C2P: "PROBA\r\n"
P2S: "PROBA 67890\r\n"
S2P: "220 kesz\r\n"
P2C: "220 kesz\r\n"
C2P: "PROBA2\r\n"
P2S: "PROBA2 12345\r\n"
.

S2P: "220 kesz\r\n"
P2C: "220 kesz\r\n"
C2P: "USER 12345\r\n"
P2S: "USER 12345\r\n"
S2P: "331 Send your password\r\n"
P2C: "331 Send your password\r\n"
C2P: "PASS 123456\r\n"
P2C: "501 Password too long.\r\n"
.

S2P: "220 kesz\r\n"
P2C: "220 kesz\r\n"
C2P: "\r\n"
P2C: Disconnect
P2S: Disconnect
.

StartPolicy
	def config(self):
		self.permit_empty_command = TRUE
		self.permit_unknown_command = TRUE
		self.response["*","*"] = (FTP_RSP_ACCEPT)
		self.request["*"] = (FTP_REQ_ACCEPT)
		self.strict_port_checking = FALSE
EndPolicy

S2P: "220 kesz\r\n"
P2C: "220 kesz\r\n"
C2P: "\r\n"
C2P: "\r\n"
C2P: "USER valami\r\n"
P2S: "USER valami\r\n"
.

StartPolicy
	def config(self):
		self.permit_unknown_command = TRUE
		self.response["*","*"] = (FTP_RSP_ACCEPT)
		self.request["*"] = (FTP_REQ_ACCEPT)
		self.request["USER"] = (FTP_REQ_POLICY, self.proba)
		self.strict_port_checking = FALSE
	def proba(self,command):
		if self.request_parameter == "valami":
			self.request_parameter = "barmi"
		else:
			self.request_parameter = "akarmi"
		return FTP_REQ_ACCEPT
EndPolicy

S2P: "220 kesz\r\n"
P2C: "220 kesz\r\n"
C2P: "USER valami\r\n"
P2S: "USER barmi\r\n"
.

S2P: "220 kesz\r\n"
P2C: "220 kesz\r\n"
C2P: "USER proba\r\n"
P2S: "USER akarmi\r\n"
.

StartPolicy
	def config(self):
		self.permit_unknown_command = TRUE
		self.response["*","*"] = (FTP_RSP_POLICY, self.proba)
		self.request["*"] = (FTP_REQ_ACCEPT)
		self.strict_port_checking = FALSE
	def proba(self,command,answer):
		if self.response_status == "345":
			self.response_status = "567"
		elif self.response_status == "346":
			self.response_status = "123"
		return FTP_RSP_ACCEPT
EndPolicy

S2P: "220 kesz\r\n"
P2C: "220 kesz\r\n"
C2P: "USER proba\r\n"
P2S: "USER proba\r\n"
S2P: "345 valami szoveg\r\n"
P2C: "567 valami szoveg\r\n"
.

S2P: "220 kesz\r\n"
P2C: "220 kesz\r\n"
C2P: "USER proba\r\n"
P2S: "USER proba\r\n"
S2P: "346 valami szoveg\r\n"
P2C: "123 valami szoveg\r\n"
.

StartPolicy
	def config(self):
		self.permit_unknown_command = TRUE
		self.response["*","*"] = (FTP_RSP_POLICY, self.proba)
		self.request["*"] = (FTP_REQ_ACCEPT)
		self.strict_port_checking = FALSE
	def proba(self,command,answer):
		if self.response_parameter == "proba":
			self.response_parameter = "nem proba"
		else:
			self.response_parameter = "megis proba"
		return FTP_RSP_ACCEPT
EndPolicy

S2P: "220 kesz\r\n"
P2C: "220 megis proba\r\n"
C2P: "USER proba\r\n"
P2S: "USER proba\r\n"
S2P: "345 proba\r\n"
P2C: "345 nem proba\r\n"
.

S2P: "220 kesz\r\n"
P2C: "220 megis proba\r\n"
C2P: "USER proba\r\n"
P2S: "USER proba\r\n"
S2P: "346 valami szoveg\r\n"
P2C: "346 megis proba\r\n"
.

StartPolicy
	def config(self):
		self.response["*","*"] = (FTP_RSP_ACCEPT)
		self.request["*"] = (FTP_REQ_ACCEPT)
		self.response_strip_msg = TRUE
		self.strict_port_checking = FALSE
EndPolicy

S2P: "220 kesz\r\n"
P2C: "220 \r\n"
C2P: "USER proba\r\n"
P2S: "USER proba\r\n"
S2P: "345 proba\r\n"
P2C: "345 \r\n"
.

StartPolicy
	def config(self):
		self.transparent_mode = FALSE
		self.response["*","*"] = (FTP_RSP_ACCEPT)
		self.request["*"] = (FTP_REQ_ACCEPT)
		self.target_port_range = str(server_port)
		self.strict_port_checking = FALSE
EndPolicy

P2C: "220-Welcome in Zorp FTP proxy authentication module!\r\n\
 Please authenticate yourself!\r\n\
 Authentication form:\r\n\
   USER <user>@<remote site>\r\n\
   PASS <password>\r\n\
220 \r\n"

C2P: "USER ftp@" %ZTS_SERVER_IP ":" %ZTS_SERVER_PORT "\r\n"
P2C: "331 Username and host okay, send your password.\r\n"
C2P: "PASS jelszo\r\n"
S2P: "220 Ok\r\n"
P2S: "USER ftp\r\n"
S2P: "331 send password\r\n"
P2S: "PASS jelszo\r\n"
S2P: "230 Access granted\r\n"
P2C: "230 Access granted\r\n"
.

StartPolicy
	def config(self):
		self.timeout = 2000
		self.response["*","*"] = (FTP_RSP_ACCEPT)
		self.request["*"] = (FTP_REQ_ACCEPT)
		self.strict_port_checking = FALSE
EndPolicy

S2P: "220 ready\r\n"
P2C: "220 ready\r\n"
A=time.sleep(3)
P2C: "500 Connection timed out\r\n"
P2S: Disconnect
P2C: Disconnect
.
