From: <jj...@us...> - 2004-02-20 14:53:59
|
Update of /cvsroot/ngetsuite/ngetsuite In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27949 Modified Files: daemon.rb ngetcache.sql resetdb.rb Log Message: new sql structure (integer indexes), misc Index: daemon.rb =================================================================== RCS file: /cvsroot/ngetsuite/ngetsuite/daemon.rb,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** daemon.rb 6 Feb 2004 23:46:59 -0000 1.12 --- daemon.rb 20 Feb 2004 14:42:43 -0000 1.13 *************** *** 1,60 **** #!/usr/bin/env ruby require 'drb' require 'ngetsuite/utils' require 'ngetsuite/config' include NgetSuite::Utils # TODO handle_opts -d -c homedir = ENV['HOME'] + File::Separator conf_file = homedir + '.ngetsuite' ! $config = NgetSuite::Config.new(conf_file) ! ! require 'ngetsuite/downloadmanager' ! ! dbuser = $config['dbuser'] ! dbname = $config['dbname'] ! $config['debug'] = true if $config['daemon_debug'] ! $nget = $config['nget'] ! basedir = $config['basedir'] ! max_dls = $config['max_dls'] ! port = $config['daemon_port'] ! logfile = $config['daemon_log'] ! ! $logger = File.new(logfile, 'a') ! def log(msg=nil) ! $logger.puts "[#{Time.now.localtime.strftime('%d/%m %H:%M:%S')}] #{msg}" if (msg) ! $logger.flush ! end ! puts "Starting daemon with log file '#{green logfile}'" ! manager = NgetSuite::DownloadManager.new(max_dls, basedir) manager.start if $config['daemon_autostart'] ! drburl = 'druby://localhost:' + port.to_s DRb.start_service(drburl, manager) - $thingsrunning = [manager] - trap('INT') { debug red('Ok, ok, i die') ; $thingsrunning.each{ |t| t.shutdown }; DRb.stop_service } - trap('TERM') { debug red('Ok, ok, i die') ; $thingsrunning.each{ |t| t.shutdown }; DRb.stop_service } - if $config['httpd_autostart'] require 'webrick' - include WEBrick port = $config['httpd_port'] puts "Starting web server on port #{port}" log 'Web server start' ! s = HTTPServer.new( :Port => port, ! :DocumentRoot => Dir::pwd + File::Separator + 'web' ) ! $thingsrunning << s ! httpThread = Thread.new { s.start ; log 'Web server down' } httpThread.join end DRb.thread.join if DRb.thread --- 1,68 ---- #!/usr/bin/env ruby + $wd = __FILE__.sub(/\/[^\/]*$/, '') + $wd = Dir::pwd if $wd == '.' or not FileTest.directory? $wd + Dir.chdir($wd) + require 'drb' require 'ngetsuite/utils' require 'ngetsuite/config' + require 'ngetsuite/db' + include NgetSuite::Utils + def log(msg=nil) + return unless msg + f = File.new($config['daemon_log'], 'a') + f.puts "[#{Time.now.localtime.strftime('%d/%m %H:%M:%S')}] #{msg}" + f.close + end + + module NgetSuite # TODO handle_opts -d -c homedir = ENV['HOME'] + File::Separator conf_file = homedir + '.ngetsuite' ! $config = Config.new(conf_file) $config['debug'] = true if $config['daemon_debug'] ! require 'ngetsuite/downloadmanager' ! $thingsrunning = Array.new ! manager = DownloadManager.new($config['max_dls'], $config['basedir']) + begin manager.start if $config['daemon_autostart'] + $thingsrunning << manager + puts 'Daemon started' ! drburl = 'druby://localhost:' + $config['daemon_port'].to_s DRb.start_service(drburl, manager) if $config['httpd_autostart'] require 'webrick' port = $config['httpd_port'] puts "Starting web server on port #{port}" log 'Web server start' ! s = WEBrick::HTTPServer.new( :Port => port, ! :DocumentRoot => $wd + File::Separator + 'web' ) ! httpThread = Thread.new { ! Dir.chdir($wd) ! $thingsrunning << s ! s.start ! log 'Web server down' ! } httpThread.join end DRb.thread.join if DRb.thread + + rescue Object => e + log "Quitting for #{e.class}::#{e}" + debug "#{red 'Quit'} #{e.class}::#{e}" + $thingsrunning.each{ |t| t.shutdown } + DRb.stop_service + end + end # module Index: ngetcache.sql =================================================================== RCS file: /cvsroot/ngetsuite/ngetsuite/ngetcache.sql,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** ngetcache.sql 4 Feb 2004 03:07:56 -0000 1.10 --- ngetcache.sql 20 Feb 2004 14:42:43 -0000 1.11 *************** *** 18,31 **** CREATE TABLE `articles` ( ! `group` varchar(64) NOT NULL default '', ! `mid` varchar(128) NOT NULL default '', `nbparts` smallint(6) NOT NULL default '0', ! `rlsnb` smallint(6) NOT NULL default '0', ! `size` double NOT NULL default '0', `subject` varchar(255) NOT NULL default '', `from` varchar(128) NOT NULL default '', `time` datetime NOT NULL default '0000-00-00 00:00:00', ! `release` varchar(128) default '', ! PRIMARY KEY (`mid`,`group`) ) TYPE=MyISAM; --- 18,32 ---- CREATE TABLE `articles` ( ! `artindex` integer unsigned NOT NULL, ! `groupindex` integer unsigned NOT NULL, ! `rlsartindex` integer unsigned, ! `rlsnb` integer, ! `mid` varchar(128) NOT NULL, `nbparts` smallint(6) NOT NULL default '0', ! `size` integer NOT NULL default '0', `subject` varchar(255) NOT NULL default '', `from` varchar(128) NOT NULL default '', `time` datetime NOT NULL default '0000-00-00 00:00:00', ! PRIMARY KEY (`artindex`, `groupindex`) ) TYPE=MyISAM; *************** *** 37,42 **** CREATE TABLE `releases` ( ! `group` varchar(64) NOT NULL default '', ! `mid` varchar(128) NOT NULL default '', `nbexpected` smallint(6) NOT NULL default '0', `nbactual` smallint(6) NOT NULL default '0', --- 38,43 ---- CREATE TABLE `releases` ( ! `groupindex` integer NOT NULL, ! `artindex` integer NOT NULL, `nbexpected` smallint(6) NOT NULL default '0', `nbactual` smallint(6) NOT NULL default '0', *************** *** 45,49 **** `rlsmap` varchar(255) default NULL, `time` datetime NOT NULL default '0000-00-00 00:00:00', ! PRIMARY KEY (`mid`,`group`) ) TYPE=MyISAM; --- 46,50 ---- `rlsmap` varchar(255) default NULL, `time` datetime NOT NULL default '0000-00-00 00:00:00', ! PRIMARY KEY (`artindex`,`groupindex`) ) TYPE=MyISAM; *************** *** 55,59 **** CREATE TABLE `groups` ( ! `fullname` varchar(128) NOT NULL default '', `shortname` varchar(32) NOT NULL default '', `directory` varchar(255) NOT NULL default '', --- 56,61 ---- CREATE TABLE `groups` ( ! `groupindex` integer NOT NULL auto_increment, ! `fullname` varchar(128) NOT NULL, `shortname` varchar(32) NOT NULL default '', `directory` varchar(255) NOT NULL default '', *************** *** 62,66 **** `date_added` datetime NOT NULL default '0000-00-00 00:00:00', `date_updated` datetime default NULL, ! PRIMARY KEY (`fullname`), UNIQUE KEY `fullname` (`fullname`) ) TYPE=MyISAM; --- 64,70 ---- `date_added` datetime NOT NULL default '0000-00-00 00:00:00', `date_updated` datetime default NULL, ! `cache_low` integer NOT NULL default '0', ! `cache_high` integer NOT NULL default '0', ! PRIMARY KEY (`groupindex`), UNIQUE KEY `fullname` (`fullname`) ) TYPE=MyISAM; *************** *** 73,80 **** CREATE TABLE `nfos` ( ! `group` varchar(64) NOT NULL default '', ! `mid` varchar(128) NOT NULL default '', `text` longtext NOT NULL, ! PRIMARY KEY (`mid`), FULLTEXT KEY `text` (`text`) ) TYPE=MyISAM; --- 77,84 ---- CREATE TABLE `nfos` ( ! `groupindex` integer NOT NULL, ! `artindex` integer NOT NULL, `text` longtext NOT NULL, ! PRIMARY KEY (`artindex`, `groupindex`), FULLTEXT KEY `text` (`text`) ) TYPE=MyISAM; *************** *** 87,93 **** CREATE TABLE `queue` ( ! `id` int(6) NOT NULL auto_increment, ! `group` varchar(64) NOT NULL default '', ! `type` set('SINGLE','REGEXP') NOT NULL default '', `value` varchar(255) NOT NULL default '', `subdir` varchar(255) NOT NULL default '', --- 91,97 ---- CREATE TABLE `queue` ( ! `queueindex` integer NOT NULL auto_increment, ! `groupindex` integer NOT NULL, ! `type` set('SINGLE','REGEXP') NOT NULL default 'REGEXP', `value` varchar(255) NOT NULL default '', `subdir` varchar(255) NOT NULL default '', *************** *** 96,104 **** `date_started` datetime default NULL, `date_finished` datetime default NULL, ! `status` set('PENDING','PROCESSING','FINISHED','STOPPED', 'FAILED') NOT NULL default 'PENDING', `nbfiles` smallint(6) NOT NULL default '0', `finalword` varchar(64) default NULL, ! `period` int(11) default '0', ! PRIMARY KEY (`id`) ) TYPE=MyISAM; --- 100,108 ---- `date_started` datetime default NULL, `date_finished` datetime default NULL, ! `status` set('PENDING','PROCESSING','FINISHED','STOPPED','FAILED') NOT NULL default 'PENDING', `nbfiles` smallint(6) NOT NULL default '0', `finalword` varchar(64) default NULL, ! `period` integer default '0', ! PRIMARY KEY (`queueindex`) ) TYPE=MyISAM; *************** *** 110,115 **** CREATE TABLE `queue_files` ( ! `queue_id` int(11) NOT NULL default '0', ! `mid` varchar(128) NOT NULL default '', `date_started` datetime NOT NULL default '0000-00-00 00:00:00', `date_finished` datetime default NULL, --- 114,119 ---- CREATE TABLE `queue_files` ( ! `queueindex` integer NOT NULL, ! `artindex` integer NOT NULL auto_increment, `date_started` datetime NOT NULL default '0000-00-00 00:00:00', `date_finished` datetime default NULL, *************** *** 117,122 **** `status` set('PROCESSING','FINISHED','ERROR_DECODING','ERROR_RETRIEVING') NOT NULL default 'PROCESSING', `filename` varchar(128) NOT NULL default '', ! `size` int(11) NOT NULL default '0', `avgspeed` mediumint(9) NOT NULL default '0', ! PRIMARY KEY (`queue_id`,`mid`) ) TYPE=MyISAM; --- 121,126 ---- `status` set('PROCESSING','FINISHED','ERROR_DECODING','ERROR_RETRIEVING') NOT NULL default 'PROCESSING', `filename` varchar(128) NOT NULL default '', ! `size` integer NOT NULL default '0', `avgspeed` mediumint(9) NOT NULL default '0', ! PRIMARY KEY (`queueindex`,`artindex`) ) TYPE=MyISAM; Index: resetdb.rb =================================================================== RCS file: /cvsroot/ngetsuite/ngetsuite/resetdb.rb,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** resetdb.rb 6 Feb 2004 23:46:59 -0000 1.2 --- resetdb.rb 20 Feb 2004 14:42:43 -0000 1.3 *************** *** 1,11 **** #!/usr/bin/env ruby conffile = ENV['HOME'] + File::Separator + '.ngetsuite' require 'ngetsuite/config' ! config = NgetSuite::Config.new(conffile) ! require 'dbi' sqlfile = File.open('ngetcache.sql') - dbh = DBI.connect("DBI:Mysql:#{config['dbname']}", config['dbuser'], config['dbpass']) cmd = '' sqlfile.each { |l| --- 1,14 ---- #!/usr/bin/env ruby + module NgetSuite conffile = ENV['HOME'] + File::Separator + '.ngetsuite' require 'ngetsuite/config' ! $config = Config.new(conffile) ! require 'ngetsuite/db' ! savedgroups = Db.dbh.select_all('select `fullname`,`shortname`,`directory`,`active`,`date_added`,`description` from `groups`') ! savedqueues = Db.dbh.select_all('select * from `queue`') ! puts "Queues (to restore manually)" + savedqueues.map{ |q| "\n"+q.map{|e| e.to_s }.join(', ') }.join sqlfile = File.open('ngetcache.sql') cmd = '' sqlfile.each { |l| *************** *** 13,25 **** if l=~/CREATE TABLE (`.*`)/ puts "Resetting #{$1}" ! dbh.do "drop table if exists #{$1}" end cmd += l if l =~ /;/ ! dbh.do cmd cmd = '' end } ! dbh.disconnect sqlfile.close puts 'done' --- 16,36 ---- if l=~/CREATE TABLE (`.*`)/ puts "Resetting #{$1}" ! Db.dbh.do "drop table if exists #{$1}" end cmd += l if l =~ /;/ ! Db.dbh.do cmd cmd = '' end } ! ! puts 'Restoring groups...' ! sth = Db.dbh.prepare "insert into `groups` (`fullname`,`shortname`,`directory`,`active`,`date_added`,`description`) values (?,?,?,?,?,?)" ! savedgroups.each { |g| ! sth.execute(*g) ! } ! ! Db.dbh.disconnect sqlfile.close puts 'done' + end |