ich poste hier mal meine Config einerseits als Beispielconfig (proftpd mit mysql und ratio) und andererseits naürlich weil sie noch nicht Perfekt läuft und ich hoffe das Ihr mal drüberschaut und mir sagt ob murks drin ist
Folgende Probleme habe ich :
1. Bei der Datenübertragung (Download) fehlt mir gelegendlich ein Byte am Schluss der Datei.
2. Resume funktioniert nicht (/data/#incoming hat CHMOD 777)
Ich bedanke mich
Code:
### Elementare Einstellungen
#### Datum 25.11.2006
ServerName "XXXXXXXXXXXXX"
ServerType standalone
ServerIdent on "Servers identifying string"
DeferWelcome on
DefaultServer on
DisplayLogin .welcome.msg # Textfile to display on login
DisplayConnect .connect # Textfile to display on connection
DisplayFirstChdir .firstchdir # Textfile to display on first changedir
UseReverseDNS off
IdentLookups off
Port 21
Umask 000
MaxInstances 25
MaxClientsPerHost 2 "Only %m connections per host allowed"
MaxClients 25 "Only %m total simultanious logins allowed"
MaxHostsPerUser 1
User nobody
Group nobody
ScoreboardFile /var/run/proftpd.scoreboard
#### Log Konfigurationen
LogFormat default "%h %l %u %t \"%r\" %s %b"
LogFormat auth "%v [%P] %h %t \"%r\" %s"
LogFormat write "%h %l %u %t \"%r\" %s %b"
# Define log-files to use
TransferLog /var/log/proftpd.xferlog
ExtendedLog /var/log/proftpd.access_log WRITE,READ write
ExtendedLog /var/log/proftpd.auth_log AUTH auth
ExtendedLog /var/log/proftpd.paranoid_log ALL default
SQLLogFile /var/log/proftpd.mysql
QuotaLog /var/log/proftpd.quota
#### SQL Authentifizierung
AuthOrder mod_sql.c
d_sql.c
SQLAuthTypes Backend
SQLConnectInfo proftpd_admin@localhost root
SQLUserInfo usertable userid passwd uid gid homedir shell
SQLGroupInfo grouptable groupname gid members
SQLUserWhereClause "disabled=0 and (NOW()<=expiration or expiration=-1 or expiration=0)"
# User Login in Datenbank schreiben
SQLLog PASS counter
SQLNamedQuery counter UPDATE "lastlogin=now(), count=count+1 WHERE userid='%u'" usertable
# User logout in Datenbank schreiben
SQLLog EXIT time_logout
SQLNamedQuery time_logout UPDATE "lastlogout=now() WHERE userid='%u'" usertable
# Letzten Login anzeigen
SQLNamedQuery login_time SELECT "lastlogin from usertable where userid='%u'"
SQLShowInfo PASS "230" "Last login was: %{login_time}"
# Transfer Log in die Datenbank
SQLLog RETR,STOR transfer1
SQLNamedQuery transfer1 INSERT "'%u', '%f', '%b', '%h', '%a', '%m', '%T', now(), 'c', NULL" xfer_stat
SQLLOG ERR_RETR,ERR_STOR transfer2
SQLNamedQuery transfer2 INSERT "'%u', '%f', '%b', '%h', '%a', '%m', '%T', now(), 'i', NULL" xfer_stat
#### User Traffic Daten
QuotaEngine on
QuotaDirectoryTally on
QuotaDisplayUnits Kb
QuotaShowQuotas on
SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM ftpquotalimits WHERE name = '%{0}' AND quota_type = '%{1}'"
SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM ftpquotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"
dQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM ftpquotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"
SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" ftpquotatallies
SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" ftpquotatallies
QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
#### Ratio Konfiguration
Ratios on # enable module
SaveRatios on # Save ratios in plain text.
CwdRatioMsg "Bitte zuerst Uploaden!" # Displayed after every directory
FileRatioErrMsg "Ratio System - Nur wer hochlaedt darf auch runterladen"
AccessDenyMsg "Zugriff verweigert - etwas stimmt nicht melde dich bei OUT[of]LAW"
# Ratios in Datenbank schreiben
SQLRatios on
SQLRatioStats on
#### weitere Konfigurationsparameter
RequireValidShell off
PathDenyFilter "\\.ftp)|\\.ht)[a-z]+$"
DefaultRoot ~
DenyFilter \*.*/
ListOptions "" strict
# Resumes
<GLOBAL>
AllowOverwrite on
AllowRetrieveRestart on
AllowStoreRestart on
</GLOBAL>
#### Verzeichnise und deren Rechte
<Directory /data/*>
HideNoAccess on
<Limit READ>
AllowAll
</Limit>
<Limit WRITE>
AllowGroup admins
</Limit>
<Limit ALL>
IgnoreHidden on
</Limit>
</Directory>
<Directory /data/#incoming/*>
HideNoAccess off
<Limit READ>
AllowAll
</Limit>
<Limit WRITE>
DenyAll
AllowGroup OR admins,family
</Limit>
<Limit STOR MKD>
AllowAll
</Limit>
</Directory>
<Directory /data/private/*>
HideNoAccess on
<Limit READ DIRS>
DenyAll
AllowGroup OR family,admins
</Limit>
<Limit WRITE>
AllowGroup OR admins,family
</Limit>
</Directory>
#### Datum 25.11.2006
ServerName "XXXXXXXXXXXXX"
ServerType standalone
ServerIdent on "Servers identifying string"
DeferWelcome on
DefaultServer on
DisplayLogin .welcome.msg # Textfile to display on login
DisplayConnect .connect # Textfile to display on connection
DisplayFirstChdir .firstchdir # Textfile to display on first changedir
UseReverseDNS off
IdentLookups off
Port 21
Umask 000
MaxInstances 25
MaxClientsPerHost 2 "Only %m connections per host allowed"
MaxClients 25 "Only %m total simultanious logins allowed"
MaxHostsPerUser 1
User nobody
Group nobody
ScoreboardFile /var/run/proftpd.scoreboard
#### Log Konfigurationen
LogFormat default "%h %l %u %t \"%r\" %s %b"
LogFormat auth "%v [%P] %h %t \"%r\" %s"
LogFormat write "%h %l %u %t \"%r\" %s %b"
# Define log-files to use
TransferLog /var/log/proftpd.xferlog
ExtendedLog /var/log/proftpd.access_log WRITE,READ write
ExtendedLog /var/log/proftpd.auth_log AUTH auth
ExtendedLog /var/log/proftpd.paranoid_log ALL default
SQLLogFile /var/log/proftpd.mysql
QuotaLog /var/log/proftpd.quota
#### SQL Authentifizierung
AuthOrder mod_sql.c
d_sql.c
SQLAuthTypes Backend
SQLConnectInfo proftpd_admin@localhost root
SQLUserInfo usertable userid passwd uid gid homedir shell
SQLGroupInfo grouptable groupname gid members
SQLUserWhereClause "disabled=0 and (NOW()<=expiration or expiration=-1 or expiration=0)"
# User Login in Datenbank schreiben
SQLLog PASS counter
SQLNamedQuery counter UPDATE "lastlogin=now(), count=count+1 WHERE userid='%u'" usertable
# User logout in Datenbank schreiben
SQLLog EXIT time_logout
SQLNamedQuery time_logout UPDATE "lastlogout=now() WHERE userid='%u'" usertable
# Letzten Login anzeigen
SQLNamedQuery login_time SELECT "lastlogin from usertable where userid='%u'"
SQLShowInfo PASS "230" "Last login was: %{login_time}"
# Transfer Log in die Datenbank
SQLLog RETR,STOR transfer1
SQLNamedQuery transfer1 INSERT "'%u', '%f', '%b', '%h', '%a', '%m', '%T', now(), 'c', NULL" xfer_stat
SQLLOG ERR_RETR,ERR_STOR transfer2
SQLNamedQuery transfer2 INSERT "'%u', '%f', '%b', '%h', '%a', '%m', '%T', now(), 'i', NULL" xfer_stat
#### User Traffic Daten
QuotaEngine on
QuotaDirectoryTally on
QuotaDisplayUnits Kb
QuotaShowQuotas on
SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM ftpquotalimits WHERE name = '%{0}' AND quota_type = '%{1}'"
SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM ftpquotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"
dQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM ftpquotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"
SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" ftpquotatallies
SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" ftpquotatallies
QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
#### Ratio Konfiguration
Ratios on # enable module
SaveRatios on # Save ratios in plain text.
CwdRatioMsg "Bitte zuerst Uploaden!" # Displayed after every directory
FileRatioErrMsg "Ratio System - Nur wer hochlaedt darf auch runterladen"
AccessDenyMsg "Zugriff verweigert - etwas stimmt nicht melde dich bei OUT[of]LAW"
# Ratios in Datenbank schreiben
SQLRatios on
SQLRatioStats on
#### weitere Konfigurationsparameter
RequireValidShell off
PathDenyFilter "\\.ftp)|\\.ht)[a-z]+$"
DefaultRoot ~
DenyFilter \*.*/
ListOptions "" strict
# Resumes
<GLOBAL>
AllowOverwrite on
AllowRetrieveRestart on
AllowStoreRestart on
</GLOBAL>
#### Verzeichnise und deren Rechte
<Directory /data/*>
HideNoAccess on
<Limit READ>
AllowAll
</Limit>
<Limit WRITE>
AllowGroup admins
</Limit>
<Limit ALL>
IgnoreHidden on
</Limit>
</Directory>
<Directory /data/#incoming/*>
HideNoAccess off
<Limit READ>
AllowAll
</Limit>
<Limit WRITE>
DenyAll
AllowGroup OR admins,family
</Limit>
<Limit STOR MKD>
AllowAll
</Limit>
</Directory>
<Directory /data/private/*>
HideNoAccess on
<Limit READ DIRS>
DenyAll
AllowGroup OR family,admins
</Limit>
<Limit WRITE>
AllowGroup OR admins,family
</Limit>
</Directory>