Titel: ProFTPD mmit mySQL und Laufzeit Beitrag von: Nash am 13. September 2006, 10:36:14 Hallo Zusammen
Ich habe ProFTPD auf FreeBSD aufgesetzt. Die Authentifizierung läuft über eine mySQL Datenbank. Diese wird über eine Weboberfläche verwaltet. Dies läuft alles sehr gut. Ich kann Benutzer über meine PHP-Seite eintragen... dann wird ein mySQL Eintrag erstellt und ihr homedir kreiert. Sie können sich dann sofort am FTP-Server anmelden. Nun muss ich ein weiteres Feature realisieren... nämlich eine Lebenszeit für die User... also wie lange ihr Account gültig ist. Ich habe mir das so vorgestellt. Ich trage in der mySQL Tabelle die Zeit des Erstellens und die Lebenszeit des Users ein. Wenn sich der User nun anmelden möche, muss der proFTPD überprüfen, ob die Zeit, wenn der User erstellt wurde + die Lebenszeit, nicht schon in der Vergangheit der Systemzeit liegen. Kann mir jemand sagen, wie ich das in der proftpd.conf eintragen muss? Hier meine aktuelle proftpd.conf # # To have more informations about Proftpd configuration # look at : http://www.proftpd.org/ # # This is a basic ProFTPD configuration file (rename it to # 'proftpd.conf' for actual use. It establishes a single server # and a single anonymous login. It assumes that you have a user/group # "nobody" and "ftp" for normal operation and anon. ServerName "********************" ServerType standalone DefaultServer on ServerIdent on "********************" ServerAdmin ********@************* DeferWelcome on UseReverseDNS off IdentLookups off # Port 21 is the standard FTP port. Port 21 # Umask 022 is a good standard umask to prevent new dirs and files # from being group and world writable. Umask 022 # To prevent DoS attacks, set the maximum number of child processes # to 30. If you need to allow more than 30 concurrent connections # at once, simply increase this value. Note that this ONLY works # in standalone mode, in inetd mode you should use an inetd server # that allows you to limit maximum number of processes per service # (such as xinetd). #Paar Einstellungen, um DoS Attacken zu minimieren MaxInstances 30 MaxClients 10 "Only 10 connections are allowed" MaxClientsPerHost 3 "You are already logged in 3 times" MaxClientsPerUser 3 "You are already logged in 3 times" MaxLoginAttempts 3 TimeoutStalled 10 TimeoutNoTransfer 20 TimeoutLogin 20 # Set the user and group under which the server will run. User nobody Group nogroup #F<FC>r bisschen mehr logging #Log Options ExtendedLog /var/log/ftp.log auth,read,write TransferLog /var/log/ftp_transfer.log # To cause every FTP user to be "jailed" (chrooted) into their home # directory, uncomment this line. DefaultRoot ~ # Normally, we want files to be overwriteable. AllowOverwrite on # Restart erlauben AllowStoreRestart on AllowRetrieveRestart on <Directory /*> AllowOverwrite on # hide everything that belongs to the group 'wheel' HideGroup wheel </Directory> ## Ab hier beginnt der ganze SQL kram... # --------------------------------------------- ### SQL Section ### # --------------------------------------------- SQLAuthTypes Backend Plaintext SQLAuthenticate users* SQLConnectInfo login@localhost *user* *passwort* SQLDefaultHomedir none SQLDefaultGID 65534 SQLDefaultUID 65534 SQLMinUserGID 80 SQLMinUserUID 80 SQLUserInfo login_ftp username password uid gid homedir shell # SQL Debugging SQLLogFile /var/log/proftpd.sql.log # We authenticate against MySQL - so not needed RequireValidShell off # Additional SQL Statements SQLNamedQuery getcount SELECT "count, username from login_ftp where username='%u'" SQLNamedQuery updatedbinfo UPDATE "count=count+1,last_login=NOW(),last_ip='%a' WHERE username='%u'" login_ftp SQLShowInfo PASS "230" "Hello %u, you were already %{getcount} times logged in" SQLLog PASS updatedbinfo # limit only to active logins SQLUserWhereClause "active = '1'" ## ... Ende SQL Zeug # Bar use of SITE CHMOD by default <Limit SITE_CHMOD> DenyAll </Limit> # A basic anonymous configuration, no upload directories. If you do not # want anonymous users, simply delete this entire <Anonymous> section. ######################################################################### # # # Uncomment lines with only one # to allow basic anonymous access # # # ######################################################################### #<Anonymous ~ftp> # User ftp # Group ftp ### We want clients to be able to login with "anonymous" as well as "ftp" # UserAlias anonymous ftp ### Limit the maximum number of anonymous logins # MaxClients 10 ### We want 'welcome.msg' displayed at login, and '.message' displayed ### in each newly chdired directory. # DisplayLogin welcome.msg # DisplayFirstChdir .message ### Limit WRITE everywhere in the anonymous chroot # <Limit WRITE> # DenyAll # </Limit> #</Anonymous> Vielen Dank für Eure Hilfe! Nash Titel: Re: ProFTPD mmit mySQL und Laufzeit Beitrag von: VolGas am 13. September 2006, 14:42:51 Hallo,
Dein "Problem" ist ja eigentlich mit dem ProFTPD nichts mehr zu tun, sondern ist nur noch Sache von SQL. Aber das ist sehr einfach zu lösen: Du kannst z.B. ein zusätzliches Datenfeld in der Tabelle für FTP anlegen mit dem Enddatum. Ich definiere das hier für dieses Beispiel mit dem Namen "enddate". Dann anderst Du den Parameter zu "SQLUserWhereClause" wie folgt: SQLUserWhereClause "active = '1' AND enddate <= NOW()" Das war jetzt die einfachste Lösung - man entsprechend alles noch ändern und verfeinern. Das war es denn auch schon... mfg. VolGas |