[[:osapa:public_timestamp|<< Public Timestamp]]
=====Contents=====
* [[https://www.linuxfoundation.org/#Server|1 Server]]
* [[https://www.linuxfoundation.org/#Database|2 Database]]
* [[https://www.linuxfoundation.org/#tables|2.1 tables]]
* [[https://www.linuxfoundation.org/#ERD|2.2 ERD]]
* [[https://www.linuxfoundation.org/#create_table|2.3 create table]]
* [[https://www.linuxfoundation.org/#ptid|2.3.1 ptid]]
* [[https://www.linuxfoundation.org/#ptid_info|2.3.2 ptid_info]]
* [[https://www.linuxfoundation.org/#pt_options|2.3.3 pt_options]]
* [[https://www.linuxfoundation.org/#ptid_transmit|2.3.4 ptid_transmit]]
* [[https://www.linuxfoundation.org/#ptb|2.3.5 ptb]]
====== Server ======
* **Platform**
* LAMP - Linux/Apache/MySQL/Perl
* **Interface**
* see [[:osapa:pt_interface| PT Interface ]]
* **Programming Language**
* Perl
* **Required Perl Modules**
* CGI
* DBI
* XML::Twig
====== Database ======
Our data base consists of a relational database with the following [[https://www.linuxfoundation.org/collaborate/workgroups/osapa/pt_server#tables|tables]] **and** the PTBs!
The database is used for using the system, enabling searches and quick-verifications.
The PTBs are used for legal evidence. The Hash-Values of these PTBs are what is going to be published. PTBs are single files with names like 'PTB-123', where the 123 is the ID of the ptb table.
===== tables =====
* **ptb**
* Each //Public Timestamp Block// has one entry here incl. some meta-informations
* ptb also contains 'first-ptid' and 'last-ptid' to tell which PTIDs are within this block
* **ptid**
* This are the actual timestamps. The ID of this table is the PTID for each timestamped file
* **ptid_info**
* contains the meta-informations on timestamped files, this is a separate table as the same file might be transmitted several times with different meta-infos (like different download urls, ..)
* **pt_options**
* just some options we need for configuration
* **ptid_transmit**
* when what was submitted to us, incl. IP etc.
* This is primarily for statistical usage and abuse-detection
===== ERD =====
[ptid] 1-------n [ptid_info] 1-------n [ptid_transmit]
1 1 1
| | | (1) first-ptid
| | | (2) last-ptid
| | | (3) my-ptid
n n n
[ptb] 1-------1 [_PTB_FILE_]
[pt_options]
===== create table =====
==== ptid ====
CREATE TABLE `ptid` (
`id` bigint(20) NOT NULL auto_increment,
`filesize` bigint(20) NOT NULL,
`sum32` char(18) NOT NULL default '',
`fcs16` char(14) NOT NULL default '',
`elf32` char(18) NOT NULL default '',
`md2sum` char(32) NOT NULL default '',
`md4sum` char(32) NOT NULL default '',
`crc64` char(26) NOT NULL default '',
`whirlpool` char(128) NOT NULL default '',
`ripemd128` char(32) NOT NULL default '',
`ripemd160` char(40) NOT NULL default '',
`crc16` char(14) NOT NULL default '',
`haval` char(32) NOT NULL default '',
`tiger` char(48) NOT NULL default '',
`sha512` char(128) NOT NULL default '',
`sha384` char(96) NOT NULL default '',
`sha256` char(64) NOT NULL default '',
`crc32mpeg2` char(18) NOT NULL default '',
`adler32` char(18) NOT NULL default '',
`cksum` char(18) NOT NULL default '',
`md5sum` char(32) NOT NULL default '',
`fcs32` char(18) NOT NULL default '',
`sha160` char(40) NOT NULL default '',
`sha0` char(40) NOT NULL default '',
`sha224` char(56) NOT NULL default '',
`tiger128` char(32) NOT NULL default '',
`tiger160` char(40) NOT NULL default '',
`tiger2` char(48) NOT NULL default '',
`whirlpool0` char(128) NOT NULL default '',
`whirlpool2` char(128) NOT NULL default '',
`ripemd256` char(64) NOT NULL default '',
`ripemd320` char(80) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
==== ptid_info ====
CREATE TABLE `ptid_info` (
`id` bigint(20) NOT NULL auto_increment,
`ptid` bigint(20) NOT NULL default '0',
`document_title` varchar(255) NOT NULL default '',
`email` varchar(255) NOT NULL default '',
`homepage` varchar(255) NOT NULL default '',
`person` varchar(255) NOT NULL default '',
`project_name` varchar(255) NOT NULL default '',
`url` varchar(255) NOT NULL default '',
`filename` varchar(255) NOT NULL default '',
`documenttype` smallint(6) NOT NULL default '0',
`reported` smallint(6) NOT NULL default '0',
`info_show` char(1) NOT NULL default '-',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
==== pt_options ====
CREATE TABLE `pt_options` (
`id` int(11) NOT NULL default '0',
`description` varchar(255) NOT NULL default '',
`value` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `pt_options` VALUES (0,'quick-stat_timestamps-today','0');
INSERT INTO `pt_options` VALUES (1,'quick-stat_timestamps-total','0');
* **quick-stat_%**
* Contains statistics that we show very often. Those stats will be updated regularly via cronjobs, so that we don't need to calculate them for every page-view
==== ptid_transmit ====
CREATE TABLE `ptid_transmit` (
`id` bigint(20) NOT NULL auto_increment,
`tstamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`ip` char(15) NOT NULL default '',
`version` int(11) NOT NULL default '0',
`subversion` int(11) NOT NULL default '0',
`ptid_info` bigint(20) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
==== ptb ====
CREATE TABLE `ptb` (
`id` bigint(20) NOT NULL auto_increment,
`first_ptid` bigint(20) NOT NULL,
`last_ptid` bigint(20) NOT NULL,
`ptid` bigint(20) NOT NULL,
`tstamp` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `ptb` VALUES (0, 0, 0, 0, '0000-00-00');
\\ [[:osapa:public_timestamp|<< Public Timestamp]]