Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IRC Shellbot (https://www.delphipraxis.net/87244-irc-shellbot.html)

Julian W. 25. Feb 2007 19:43


IRC Shellbot
 
Moin,
also ich hab mir mit nem Freund zusammen nen Root gemietet und weil ich nicht immer per remote drauf connecten will würd ich gerne ne art IRC Shellbot basteln. Also der immer auf einen irc server connected und dann halt meine Befehle entgegennimmt. Aber ich hab kein Plan, wie ich das umsetzen soll. Das mim irc usw ist noch klar, aber wie soll ich das mit den befehlen hinbekommen? Müsste ich da jetz immer alle möglichkeiten mit if abfragen? So nach dem motto:
Delphi-Quellcode:
procedure TForm1.IdIRC1Message(Sender: TObject; AUser: TIdIRCUser;
  AChannel: TIdIRCChannel; Content: String);
begin
if content = 'dir' then
blebleble
else if content = 'cd' then
blablabla
...
end;
und wie kann das dann mit den Parametern gehen, also wenn ich jetz z.B. ein cd machen will, muss ich ja auch den Ordner mit übergeben, in den gewechseld werden soll...

Ich hoffe ihr könnt mir ein bisschen helfen. Greetz Julian

inherited 25. Feb 2007 19:59

Re: IRC Shellbot
 
Ich würde auf jeden fall mindestens noch den Sender abfragen, damit ihn niemand missbraucht.
Zu deinem problem: du kannst du einfach mit ShellExecute den Content ausführen.

Julian W. 25. Feb 2007 20:27

Re: IRC Shellbot
 
Zitat:

Zitat von inherited
Ich würde auf jeden fall mindestens noch den Sender abfragen, damit ihn niemand missbraucht.

Das ist kein Problem, da man den channel mit passwort versehen kann und ihn unsichtbar machen kann ;)

Zitat:

Zitat von inherited
Zu deinem problem: du kannst du einfach mit ShellExecute den Content ausführen.

Ja stimmt, aber wie siehts aus, wenn ich eigene Befehle einbaun will, dies nicht bei DOS gibt? Bzw. wie soll ich die dos ausgabe abfangen und zurückgeben? Immer alles in ne txt ausgeben zu lassen, die auszulesen und zu antworten ist ja auch doof..
Greetz und danke schonma - Julian

inherited 26. Feb 2007 16:50

Re: IRC Shellbot
 
Das Abfangen kannst du über Pipes, bzw. Named Pipes realisieren. Du musst nur mal suchen, dasa hatten wir hier schon oft.
Wenn du eigene Befehle haben willst, kannst du ja vorher überprüfen ob es ein Befehl von dir ist, und sonst es über ShellExecute versuchen auszuführen.

Julian W. 26. Feb 2007 17:21

Re: IRC Shellbot
 
ja ok, das bekomm ich ja vermutlich noch hin, aber wie soll ich das mit eigenen befehlen machen? Da hab ich echt kp... Gibts nich sowas wie eingabemasken?
Wär gut wenn mir jemand weiterhelfen könnte.

Greetz Julian

Julian W. 1. Mär 2007 16:36

Re: IRC Shellbot
 
Ok, das hat sich jetz erledigt. Hab mich erstmal an den pipes usw versucht. Klappt auch, aber leider wird nicht die gesamte cmd Ausgabe per IRC zurückgesendet.
Hier mal mein code, vielleicht wisst ihr ja woran das liegt:

Delphi-Quellcode:
procedure TForm1.FClbProc(Sender: TObject; const ABuffer: String; ABufSize: Cardinal);
var LNew: string;
    LPos: Integer;
begin
  LNew := copy(ABuffer, 1, ABufSize);
  LPos := pos(#$C, LNew);
  if (LPos > 0) then
  begin
    MemoOutput.Text := '';
    LNew := copy(LNew, LPos + 1, Length(LNew));
  end;
  MemoOutput.Text := MemoOutput.Text + LNew;
     
  IdIRC1.Say('#lalalalala',Lnew);
 
  PostMessage(MemoOutput.Handle, WM_VSCROLL, SB_BOTTOM, 0);
end;
Ich habe den Code weitgehend hieraus übernommen:
http://www.delphipraxis.net/internal...=598121#598121

Greetz Julian


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz