www.ProFTPD.de
13. März 2007, 21:39:34 *
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: ProFTPD mmit mySQL und Laufzeit  (Gelesen 117 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
Nash
ProFTPD
*
Offline Offline

Beiträge: 1


Profil anzeigen
« 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
Gespeichert
VolGas
Moderator
ProFTPD
*****
Offline Offline

Beiträge: 771



Profil anzeigen
« Antwort #1 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
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.108 Sekunden mit 16 Zugriffen.