www.ProFTPD.de
13. März 2007, 20:36:59 *
Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge
News: SMF - Neu installiert!
 
   Übersicht   Hilfe Suche Login Registrieren  
Seiten: [1]   Nach unten
  Drucken  
Autor Thema: SQLUserWhereClause erweitern  (Gelesen 216 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
hos_joker
ProFTPD
*
Offline Offline

Beiträge: 14


Profil anzeigen
« am: 10. August 2006, 11:10:16 »

Hallo,

folgende Struktur ist vorgegeben: zentrale DB mit bis zu mehreren tausend FTP-Usern. Dazu eine gewisse Anzahl von Servern, auf denen ProFTPd (+mod_sql) läuft. Die User in der DB sollen natürlich NICHT auf alle Server zugreifen, sondern nur auf einen spezifischen.

In der ftp_user Tabelle ist dazu ein Feld mit der IP des erlaubten Servers.

Ich habe jetzt folgendes versucht:
Code:
SQLUserWhereClause "login_enabled = 'Y' AND Server_IP = '%L'"

Leider löst es %L (normalerweise die IP des aktuellen FTP-Server(?)) nicht auf, das SQL-Log:
Zitat
query "SELECT username, password, uid, gid, homedir, shell FROM ftp_users WHERE (username='test_123') and ((login_enabled = 'Y' AND Server_IP = '%L')) LIMIT 1"

Wie kann ich die SQLUserWhereClause so erweitern, dass die IP-Adresse des momentanen Server an die DB übertragen wird? (Das hardcodieren der IP-adresse ist keine Option, da alle FTP-Server eine identische Konfiguration besitzen müssen) Oder gibt es andere Wege, das gewünschte Verhalten zu erreichen.

Vielen Dank für eure Ideen - falls jemand eine hat Zwinkernd

Gespeichert
VolGas
Moderator
ProFTPD
*****
Offline Offline

Beiträge: 771



Profil anzeigen
« Antwort #1 am: 10. August 2006, 12:15:53 »

Hallo!

Wenn (Betonung auf: Wenn!) Variabeln bei "SQLUserWhereClause" erlaubt sind, dann
sind es wahrscheinlich nur die der Direktive "LogFormat" (siehe ->hier)

Ein "%L" ist dort nicht definiert, aber "%v" wäre eine Alternative: %v : Local server name
Du müßtest Deine SQL-Tabelle anpassen, probiere aber vorher vielleicht erst aus, ob
überhaupt eine Variabelnsubstitution bei "SQLUserWhereClause" vorgenommen wird.

Auf unseren Servern haben wir jeweils die proftpd.conf angepasst, aber wenn das wie
spekuliert funktionieren sollte...

Ich bitte um Rückmeldung.
Danke!

mfg.
  VolGas
Gespeichert
hos_joker
ProFTPD
*
Offline Offline

Beiträge: 14


Profil anzeigen
« Antwort #2 am: 10. August 2006, 12:22:00 »

Das %L hatte ich aus http://www.proftpd.de/HowTo_Logging.31.0.html

Ich befürchte auch %v würde mir, selbst wenn es ersetzt würde, nicht weiterhelfen, da dort ja der Server-String (also z.B. "Blubb-Server Version 7") vermerkt ist - und der ist ja auch bei allen Servern gleich...  Traurig
Gespeichert
VolGas
Moderator
ProFTPD
*****
Offline Offline

Beiträge: 771



Profil anzeigen
« Antwort #3 am: 10. August 2006, 13:19:58 »

Da muß ich wiedersprechen: wir haben das im Logformat und dort steht brav der Servername.
Aber lange Rede, kurzer Sinn: ich habe es bei uns auf die Gefahr von bösen Anrufen hin probiert
und so wie es aussieht, wird keine Variabelsubstitution vorgenommen. "%v" kommt beim
SQL-Server genau so an.

Ich sehe daher also nur den Weg, daß Du die jeweiligen proftpd.conf anpasst.
Ist ja nur minimal.
Sorry.

mfg.
  VolGas
Gespeichert
hos_joker
ProFTPD
*
Offline Offline

Beiträge: 14


Profil anzeigen
« Antwort #4 am: 10. August 2006, 13:31:37 »

Ok - danke erstmal für die Korrektur und die Antwort. Vielleicht hat ja jemand noch eine andere Idee (irgendwelche anderen mod's?), da unsere Konfiguration zu 99% zentral verwaltet wird (also alle server quasi-identisch sind) wäre eine separate Konfiguration leider keine Lösung.
Gespeichert
VolGas
Moderator
ProFTPD
*****
Offline Offline

Beiträge: 771



Profil anzeigen
« Antwort #5 am: 10. August 2006, 14:38:51 »

Mir ist noch etwas eingefallen: wenn der ProFTPD sich via Netzwerk an einen mySQL-Server
anmeldet, so könnte man evtl. den Servernamen mittels "SUBSTRING_INDEX(USER(),'@',-1)"
herausbaldobern. Das kann man bequem in sein SQL-Query einbauen und wäre allgemein
anwendbar.

mfg.
  VolGas
Gespeichert
hos_joker
ProFTPD
*
Offline Offline

Beiträge: 14


Profil anzeigen
« Antwort #6 am: 10. August 2006, 14:55:27 »

Ja, das sieht ganz gut aus. Nur statt der IP den Servernamen in die DB schreiben, dann sollte das passen. Das bringt mich schon mal enorm weiter - Danke Smiley

Werde dann berichten, falls noch Probleme auftauchen...
Gespeichert
Seiten: [1]   Nach oben
  Drucken  
 
Gehe zu:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.2 | SMF © 2006-2007, Simple Machines LLC Prüfe XHTML 1.0 Prüfe CSS
Seite erstellt in 0.059 Sekunden mit 19 Zugriffen.