www.ProFTPD.de

ProFTPD => ProFTPD - Deutsch => Thema gestartet von: freq.9 am 02. Oktober 2005, 19:22:17



Titel: Problem mit SQLNamedQuery
Beitrag von: freq.9 am 02. Oktober 2005, 19:22:17
Ich bin dabei mir eine Statistik für die FTP Zugriffe zu basteln. Es kann zwar
sein, dass es schon welche gibt aber ich will zudem auch etwas in Sachen
ProFTPd lernen. Also habe ich eine Tabelle erstellt die wie folgt aussieht:

Code:
SELECT * FROM ftp_statistics;
+--------------+-------+--------+
| name         | f_int | f_char |
+--------------+-------+--------+
| access_count |     0 | NULL   |
| on_monday    |     0 | NULL   |
| on_tuesday   |     0 | NULL   |
| on_wednesday |     0 | NULL   |
| on_thursday  |     0 | NULL   |
| on_friday    |     0 | NULL   |
| on_saturday  |     0 | NULL   |
| on_sunday    |     0 | NULL   |
| in_january   |     0 | NULL   |
| in_february  |     0 | NULL   |
| in_march     |     0 | NULL   |
| in_april     |     0 | NULL   |
| in_may       |     0 | NULL   |
| in_june      |     0 | NULL   |
| in_july      |     0 | NULL   |
| in_august    |     0 | NULL   |
| in_september |     0 | NULL   |
| in_october   |     0 | NULL   |
| in_november  |     0 | NULL   |
| in_december  |     0 | NULL   |
+--------------+-------+--------+
20 rows in set (0.00 sec)


Die Tabelle ist so aufgebaut, dass ich Integerwerte sowie Zeichen eingeben kann.
Diese Trennung habe ich gewählt, da die Sortierung von Zahlen in VARCHAR Spalten
nicht richtig ist. Und ich habe 3 Queries erstellt in der /etc/proftpd.conf

Code:
# Statistic
SQLNamedQuery   day     UPDATE   "f_int=f_int+1 WHERE name=CONCAT('on_', dayname(now()))"     ftp_statistics
SQLNamedQuery   month   UPDATE   "f_int=f_int+1 WHERE name=CONCAT('in_', monthname(now()))"   ftp_statistics
SQLNamedQuery   login   UPDATE   "f_int=f_int+1 WHERE name='access_count'"                    ftp_statistics


die sollten doch nun wie folgt aussehen:

Code:
UPDATE ftp_statistics SET f_int=f_int+1 WHERE name=CONCAT('on_', dayname(now()));
UPDATE ftp_statistics SET f_int=f_int+1 WHERE name=CONCAT('in_', monthname(now()));
UPDATE ftp_statistics SET f_int=f_int+1 WHERE name='access_count';


Nebenbei:
CONCAT('on_', LOWER(dayname(now())))     --> on_sunday
CONCAT('in_', LOWER(monthname(now())))   --> in_october

Wenn ich nun aber zum Server verbinde und mir die Daten in der Tabelle anschaue
hat sich da nichts geändert. In meiner Log-Datei /var/log/proftpd/sql steht
auch nichts, dass da was fehlgeschlagen ist.

Wieso wird da nichts an der Tabelle geändert?


Titel: Problem mit SQLNamedQuery
Beitrag von: freq.9 am 05. Oktober 2005, 19:25:02
Hat denn da keiner ne Ahnung wieso da nichts passiert?


Titel: Problem mit SQLNamedQuery
Beitrag von: Wörsty am 07. Oktober 2005, 21:06:43
Ich poste mal meine Konfiguration.
Vielleicht hilft dir das. :)

Code:
 SQLLog * history
  SQLLog PASS  updatecount
  SQLLog PASS  letzter_zugriff
  SQLLog DELE  delfile
  SQLLog RETR  getfile
  SQLLog *  history
  SQLNamedQuery history     INSERT "'%U', '%u', '%f', '%b', '%h', '%a', '%m', '%T', now(), 'ok', NULL" history
  SQLNamedQuery history_err INSERT "'%U', '%u', '%f', '%b', '%h', '%a', '%m', '%T', now(), 'nicht ok', NULL" history
  SQLNamedQuery updatecount     UPDATE "ftp_login_count=ftp_login_count+1 WHERE loginname='%u'" users
  SQLNamedQuery letzter_zugriff UPDATE "last_ftp_login = now() where loginname = '%u'" users
  SQLNamedQuery delfile         UPDATE "deleted ='ja' where loginname = '%u' and dateiname = '%F'" ftp_query
  SQLNamedQuery getfile         UPDATE "downloadcount = downloadcount + 1, last_download = now() where fullpath = '%f' and loginname = '%u'" ftp_query
  SQLNamedQuery history         INSERT "'%U', '%u', '%f', '%b', '%h', '%a', '%m', '%T', now(), 'ok', NULL" ftp_history
  SQLNamedQuery history_err     INSERT "'%U', '%u', '%f', '%b', '%h', '%a', '%m', '%T', now(), 'nicht ok', NULL" ftp_history


Code:
#
# Table structure for table 'ftp_history'
#

DROP TABLE IF EXISTS `ftp_history`;
CREATE TABLE `ftp_history` (
  `loginname` varchar(30) default NULL,
  `identname` varchar(30) default NULL,
  `filename` text,
  `size` bigint(20) default NULL,
  `host` varchar(80) default NULL,
  `ip` varchar(16) default NULL,
  `aktion` varchar(255) default NULL,
  `dauer` varchar(10) default NULL,
  `zeit_lokal` datetime default NULL,
  `status` set('ok','nicht ok','test') default NULL,
  `ui` bigint(20) NOT NULL auto_increment,
  PRIMARY KEY  (`ui`)
) TYPE=MyISAM COMMENT='Ausgeführte FTP-Befehle (FTP-Warteschlange)';


#
# Table structure for table 'ftp_query'
#

DROP TABLE IF EXISTS `ftp_query`;
CREATE TABLE `ftp_query` (
  `ftp_query_id` int(10) unsigned NOT NULL auto_increment,
  `dateiname` char(255) NOT NULL default '',
  `user_id` int(10) unsigned NOT NULL default '0',
  `query_date` datetime NOT NULL default '0000-00-00 00:00:00',
  `downloadcount` smallint(5) unsigned NOT NULL default '0',
  `last_download` datetime default NULL,
  `byte` int(10) unsigned NOT NULL default '0',
  `files_id` int(10) unsigned default NULL,
  `loginname` char(255) NOT NULL default '',
  `deleted` enum('nein','ja') NOT NULL default 'nein',
  `fullpath` char(255) NOT NULL default '',
  PRIMARY KEY  (`ftp_query_id`),
  UNIQUE KEY `ftp_query_id` (`ftp_query_id`),
  KEY `ftp_query_id_2` (`ftp_query_id`)
) TYPE=MyISAM COMMENT='Dateien in den FTP-Warteschlagen';

#
# Table structure for table 'history'
#

DROP TABLE IF EXISTS `history`;
CREATE TABLE `history` (
  `loginname` varchar(30) default NULL,
  `filename` text,
  `size` bigint(20) default NULL,
  `host` varchar(80) default NULL,
  `ip` varchar(16) default NULL,
  `aktion` varchar(255) default NULL,
  `dauer` varchar(10) default NULL,
  `zeit_lokal` datetime default NULL,
  `status` set('ok','nicht ok') default NULL,
  `ui` bigint(20) NOT NULL auto_increment,
  PRIMARY KEY  (`ui`),
  KEY `zeit` (`zeit_lokal`),
  KEY `loginname` (`loginname`)
) TYPE=MyISAM COMMENT='FTP-Befehlshistory für den Server Port 21';


Titel: Problem mit SQLNamedQuery
Beitrag von: freq.9 am 08. Oktober 2005, 15:01:17
Jau werd ich mir später mal anschauen. Das mit dem Loggen sieht recht interessant aus. Nur muss ich erst meinen Server neu aufsetzen. Ein böser yum-Befehl hat mir heute Nacht meinen Server zerschossen. Okay laufen tut er noch nur wurden an die 120 Programme und Tools gelöscht und von daher ist mir eine Neuinstallation lieber.


Titel: Problem mit SQLNamedQuery
Beitrag von: freq.9 am 11. Oktober 2005, 03:24:42
Okay nun gehts ;) Nun werd ich mir mal in den nächsten Tagen was nettes basteln um die Daten zu visualisieren :-)