handleProt method
PROT: Data Channel Protection Level (RFC 4217 ยง9).
Implementation
void handleProt(String argument, FtpSession session) {
if (!session.tlsActive) {
session.sendResponse('503 AUTH TLS required first');
return;
}
if (!session.pbszReceived) {
session.sendResponse('503 PBSZ required before PROT');
return;
}
if (argument.isEmpty) {
session.sendResponse('501 Syntax error in parameters');
return;
}
final level = argument.toUpperCase();
switch (level) {
case 'P':
session.protectionLevel = ProtectionLevel.private_;
session.sendResponse('200 Data protection set to Private');
break;
case 'C':
if (session.requireEncryptedData) {
session.sendResponse('534 PROT C denied by server policy');
} else {
session.protectionLevel = ProtectionLevel.clear;
session.sendResponse('200 Data protection set to Clear');
}
break;
case 'S':
case 'E':
session.sendResponse('504 Protection level not supported');
break;
default:
session.sendResponse('504 Protection level not supported');
break;
}
}