#!/usr/bin/ruby # # BigBlueButton open source conferencing system - http://www.bigbluebutton.org/ # # Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below). # # This program is free software; you can redistribute it and/or modify it under the # terms of the GNU Lesser General Public License as published by the Free Software # Foundation; either version 3.0 of the License, or (at your option) any later # version. # # BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License along # with BigBlueButton; if not, see . # require "rubygems" require "fileutils" require "redis" PUBLISHED_DIR="/var/bigbluebutton/published" UNPUBLISHED_DIR="/var/bigbluebutton/unpublished" DELETED_DIR="/var/bigbluebutton/deleted" RECORDING_DIR="/var/bigbluebutton/recording" def cleanProcessedFiles(path) redis=Redis.new # get the pastday pastday=Time.new-(3600*24) puts "Cleaning out conferences before #{pastday}" (Dir.entries(path) - ['.','..']).each do |playback| (Dir.entries(path+"/#{playback}") - ['.','..']).each do |meeting| modtime = File.mtime(path+"/#{playback}/#{meeting}") dif=modtime <=> pastday # 1 represents all the recording upto the pastday if dif != 1 puts "Meeting: #{meeting}" #Deleting Processed Dir puts "Checking record and ingest directories..." puts "Deleting *.done files..." FileUtils.rm_rf RECORDING_DIR+"/status/recorded/#{meeting}.done" FileUtils.rm_rf RECORDING_DIR+"/status/archived/#{meeting}.done" FileUtils.rm_rf RECORDING_DIR+"/status/processed/#{meeting}-#{playback}.done" puts "Deleting processed directories..." if(File.directory?(RECORDING_DIR+"/process/#{playback}/#{meeting}")) FileUtils.rm_rf RECORDING_DIR+"/process/#{playback}/#{meeting}" end if(File.directory?(RECORDING_DIR+"/publish/#{playback}/#{meeting}")) FileUtils.rm_rf RECORDING_DIR+"/publish/#{playback}/#{meeting}" end #Deleting Redis Keys puts "Checking redis keys..." if( redis.exists("meeting:#{meeting}:recordings")) len= redis.llen("meeting:#{meeting}:recordings") range= redis.lrange("meeting:#{meeting}:recordings",0,len) range.each do |msgid| redis.del("recording:#{meeting}:#{msgid}") end puts "Deleting Redis Keys for #{meeting}" redis.del("meeting:#{meeting}:recordings") end end end end end cleanProcessedFiles(PUBLISHED_DIR) cleanProcessedFiles(UNPUBLISHED_DIR) #def clean_presentation_dependents(recording_dir) # # clean workspace so the formats that depend on the presentation format to be # # published will run # [ "presentation_export" ].each do |dependent_format| # presentation_published_done_files = Dir.glob("#{recording_dir}/status/published/*-presentation.done") # presentation_published_done_files.each do |published_done| # match = /([^\/]*)-([^\/-]*).done$/.match(published_done) # meeting_id = match[1] # process_type = match[2] # processed_fail = "#{recording_dir}/status/processed/#{meeting_id}-#{dependent_format}.fail" # if File.exists? processed_fail # BigBlueButton.logger.info "Removing #{processed_fail} so #{dependent_format} can execute in the next run of rap-worker" # FileUtils.rm processed_fail # end # end # end #end