procedure KNewsServer.user(pClientIP:string; pClientPort:integer; pMessage:string);
var
pUser:string;
begin
//kopiert den angegebenen usernamen aus dem eingegebenen wert
pUser:=copy(pMessage, 6, length(pMessage)-5);
if not Clients.isEmpty then
begin
// Schauen ob der Benutzer schon woanders mit IP und Port und Auth vermerkt ist
Clients.toFirst;
while not (Clients.isBehind)
and not (KUser(Clients.getItem).getauth=true)
and not (KUser(Clients.getItem).getIp=pClientIP)
and not (KUser(Clients.getItem).getPort=pCLientPort) DO
Clients.next;
// wenn er IP und Port mit Auth nicht gefunden hat(er also nicht unter einem anderen
// benutzernamen angemeldet ist) dann darf er weiter machen
if Clients.isBehind then
begin
// jetzt beginnt die suche nach dem user namen
Clients.toFirst;
while not(Clients.isBehind) AND (KUser(Clients.getItem).getName<>pUser) DO
Clients.next;
// weiter wenn er nicht hinter der liste steht (also user gefunden hat)
if not Clients.isBehind then
begin
if (KUser(Clients.getItem).getauth=false)
and (KUser(Clients.getItem).getIp='') then
begin
KUser(Clients.getItem).setIP(pClientIP);
KUser(Clients.getItem).setPort(pClientPort);
send(pClientIP,pClientPort,'OKOK Ip und Port wurden fuer Ihren Benutzernamen eingetragen');
passerlaubt:=true;
end
else
begin
send(pClientIP,pClientPort,'KOKO User bereits angemeldet');
passerlaubt:=false;
end;
end
else
begin
send(pClientIP,pCLientPort,'KOKO User nicht vorhanden');
passerlaubt:=false;
end;
end
else
begin
send(pCLientIP,pCLientPort,'KOKO Sie sind bereits unter einem anderen Usernamen angemeldet');
passerlaubt:=false;
end;
end
else
begin
send(pClientIP,pCLientPort,'KOKO User nicht vorhanden');
passerlaubt:=false;
end;
end;