[HowTo] Softlimits zu Hardlimits machen in sysCP

Bitte loggen sie sich ein oder registrieren sie sich.

Einloggen mit Benutzername, Passwort und Sitzungslänge
Erweiterte Suche  

Autor Thema: [HowTo] Softlimits zu Hardlimits machen in sysCP  (Gelesen 2374 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Sascha833

  • Grünschnabel
  • *
  • Offline Offline
  • Beiträge: 25
[HowTo] Softlimits zu Hardlimits machen in sysCP
« am: 24.Januar 2009, 21:05:58 »

Hallo,
Ich hab mal ein kleines HowTo erstellt wie man bei seinem sysCP aus Soft Hardlimits macht.
Was ist der Unterschied zwischen Soft und Hardlimits?
Softlimits können vom User überschritten werden wenn ihr bei eurem sysCP einem Kunden einen Webspace mit 20MB gebt kann dieser auch 5Gb oder mehr hochladen. Bei Hardlimits ist das nicht so. Dort kann der User nur 20Mb hochladen.

Backup machen vor dem Beginn!
1.) Falls nocht nicht vorhanden proftpd-mysql installieren mit "apt-get install proftpd-mysql"

2.) 2 Tabellen in der sysCP Datenbank erstellen.
CREATE TABLE ftpquotatallies (
name varchar(30) NOT NULL default '',
quota_type enum('user','group','class','all') NOT NULL default 'user',
bytes_in_used int(10) unsigned NOT NULL default '0',
bytes_out_used int(10) unsigned NOT NULL default '0',
bytes_xfer_used int(10) unsigned NOT NULL default '0',
files_in_used int(10) unsigned NOT NULL default '0',
files_out_used int(10) unsigned NOT NULL default '0',
files_xfer_used int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM;
CREATE TABLE ftpquotalimits (
name varchar(30) default NULL,
quota_type enum('user','group','class','all') NOT NULL default 'user',
per_session enum('false','true') NOT NULL default 'false',
limit_type enum('soft','hard') NOT NULL default 'soft',
bytes_in_avail int(10) unsigned NOT NULL default '0',
bytes_out_avail int(10) unsigned NOT NULL default '0',
bytes_xfer_avail int(10) unsigned NOT NULL default '0',
files_in_avail int(10) unsigned NOT NULL default '0',
files_out_avail int(10) unsigned NOT NULL default '0',
files_xfer_avail int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM;

3.) Die proftpd.conf und modules.conf editeren (vorher ein Backup machen)
Die Datein befinden sich in /etc/proftpd
In der modules.conf aktivieren wir alle Module außer mod_sql_postgres.c so das sie nacher so aussieht:
...
LoadModule mod_ctrls_admin.c
LoadModule mod_tls.c
LoadModule mod_sql.c
LoadModule mod_ldap.c
LoadModule mod_sql_mysql.c
#LoadModule mod_sql_postgres.c
LoadModule mod_quotatab.c
LoadModule mod_quotatab_file.c
LoadModule mod_quotatab_ldap.c
LoadModule mod_quotatab_sql.c
LoadModule mod_radius.c
LoadModule mod_wrap.c
LoadModule mod_rewrite.c
...
den Rest der Datei unverändert lassen.
In der proftpd.conf fügen wir am ENDE
# Update count every time user logs in
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftp_user

# Update modified everytime user uploads or deletes a file
SQLLog  STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftp_user
# User quotas
# ===========
QuotaEngine on
QuotaDirectoryTally on
QuotaDisplayUnits Mb
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_ou$

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 $

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 + %$

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
ein.

4.) admin_customers.php anpassen so das die ftpquotalimits beim erstellen eines Kunden gefüllt wird.
Dazu in der admin_customers.php nach
$customerid = $db->insert_id();
$admin_update_query = "UPDATE `" . TABLE_PANEL_ADMINS . "` SET `customers_used` = `customers_used` + 1";

suchen (ca. Zeile 587)

Dann fügen wir zwischen diesen 2 Zeilen
//Quotaeinträge erstelllen
$quotalimit = $diskspace * 1024;
$result = $db->query("INSERT INTO `ftpquotalimits` (`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`)  VALUES ('" . $db->escape($loginname) . "', 'user', 'false', 'hard', '" . $db->escape($quotalimit) . "', '0', '0', '0', '0', '0')");
//Ende Quotaeinträge erstellen
ein
sodass es nacher so aussieht:
$customerid = $db->insert_id();
//Quotaeinträge erstelllen
$quotalimit = $diskspace * 1024;
$result = $db->query("INSERT INTO `ftpquotalimits` (`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`)  VALUES ('" . $db->escape($loginname) . "', 'user', 'false', 'hard', '" . $db->escape($quotalimit) . "', '0', '0', '0', '0', '0')");
//Ende Quotaeinträge erstellen
$admin_update_query = "UPDATE `" . TABLE_PANEL_ADMINS . "` SET `customers_used` = `customers_used` + 1";

Wenn ich nichts vergessen habe solltet ihr jetzt Hardquotas haben :)
ACHTUNG: Die Quotas werden nur beim erstellen des Kunden gesetzt. Wenn der kunde nachträglich bearbeitet wird werden die Quotas nicht geändert das muss derzeit noch händisch in der DB gemacht werden.
mfg Sascha
Gespeichert


 

Seite erstellt in 0.413 Sekunden mit 17 Abfragen.