summaryrefslogtreecommitdiff
path: root/www/tdiary-devel/files/tdiaryinst.rb.in
diff options
context:
space:
mode:
Diffstat (limited to 'www/tdiary-devel/files/tdiaryinst.rb.in')
-rw-r--r--www/tdiary-devel/files/tdiaryinst.rb.in316
1 files changed, 0 insertions, 316 deletions
diff --git a/www/tdiary-devel/files/tdiaryinst.rb.in b/www/tdiary-devel/files/tdiaryinst.rb.in
deleted file mode 100644
index ba909cbf0667..000000000000
--- a/www/tdiary-devel/files/tdiaryinst.rb.in
+++ /dev/null
@@ -1,316 +0,0 @@
-#!/usr/bin/env ruby
-#
-# tdiaryinstall.rb - tDiary user directory copy script
-# Date created: 13 July 2003
-# Whom: KAMIYA Satosi <mimoriso@anet.ne.jp>
-#
-# $FreeBSD$
-#
-
-require 'getoptlong'
-require 'etc.so'
-require 'fileutils'
-require 'find'
-require 'tempfile'
-
-#
-$OPT_TDIARYMASTER = "@@@@PREFIX@@@@/share/examples/tdiary"
-$OPT_LANG = '@@@@LANG@@@@'
-
-module FileUtils16
- def FileUtils16.mkdir_p(dir, *options)
- begin
- FileUtils.mkdir_p(dir, *options)
- rescue TypeError
- optionhash = {}
- options.each { |o| optionhash[o] = true }
- FileUtils.mkdir_p(dir, optionhash)
- end
- end
- def FileUtils16.cp(src, dest, *options)
- begin
- FileUtils.cp(src, dest, *options)
- rescue TypeError
- optionhash = {}
- options.each { |o| optionhash[o] = true }
- FileUtils.cp(src, dest, optionhash)
- end
- end
- def FileUtils16.cp_r(src, dest, *options)
- begin
- FileUtils.cp_r(src, dest, *options)
- rescue TypeError
- optionhash = {}
- options.each { |o| optionhash[o] = true }
- FileUtils.cp_r(src, dest, optionhash)
- end
- end
- def FileUtils16.rm(list, *options)
- begin
- FileUtils.rm(list, *options)
- rescue TypeError
- optionhash = {}
- options.each { |o| optionhash[o] = true }
- FileUtils.rm(list, optionhash)
- end
- end
- def FileUtils16.ln_s(list, destdir, *options)
- begin
- FileUtils.ln_s(list, destdir, *options)
- rescue TypeError
- optionhash = {}
- options.each { |o| optionhash[o] = true }
- FileUtils.ln_s(list, destdir, optionhash)
- end
- end
- def FileUtils16.chmod(mode, list, *options)
- begin
- FileUtils.chmod(mode, list, *options)
- rescue TypeError
- optionhash = {}
- options.each { |o| optionhash[o] = true }
- FileUtils.chmod(mode, list, optionhash)
- end
- end
-end
-
-def usage
- STDERR.print "Usage: #{File.basename($0)} [options]\n"
- STDERR.print "Options:\n"
- STDERR.print " --help Display this information\n"
- STDERR.print " --user=<username> Specify user's login name\n"
- STDERR.print " --diarydir=<diarydir> Specify tDiary data directory default: diary\n"
- STDERR.print " --httpdir=<httpdir> Specify apache UserDirectory default: public_html\n"
- STDERR.print " --name=<author_name> Specify author name\n"
- STDERR.print " --mail=<author_mail> Specify author mail address\n"
- STDERR.print " --tdiarymaster=<dir> Specify tDiary master directory default: @@@@PREFIX@@@@/share/examples/tdiary\n"
- STDERR.print " --lang=<language> Specify your language ('en' or 'ja') default: @@@@LANG@@@@\n"
- STDERR.print " --suexec Use suExec for CGI execution\n"
- STDERR.print " --symlink Use symbolic link for tDiary master files\n"
- STDERR.print " --quiet Do not display any information\n"
- STDERR.print " --noop Do not install any file. Use this option with --verbose\n"
- STDERR.print " --verbose Verbose; display verbose debugging messages.\n"
- exit 1
-end
-
-parser = GetoptLong.new
-parser.set_options(
- ['--user', '-u', GetoptLong::REQUIRED_ARGUMENT],
- ['--diarydir','-d', GetoptLong::REQUIRED_ARGUMENT],
- ['--httpdir' ,'-h', GetoptLong::REQUIRED_ARGUMENT],
- ['--name', '-n', GetoptLong::REQUIRED_ARGUMENT],
- ['--mail', '-m', GetoptLong::REQUIRED_ARGUMENT],
- ['--tdiarymaster' , GetoptLong::REQUIRED_ARGUMENT],
- ['--lang' , GetoptLong::REQUIRED_ARGUMENT],
- ['--suexec' , GetoptLong::NO_ARGUMENT],
- ['--symlink', '-l', GetoptLong::NO_ARGUMENT],
- ['--quiet', '-q', GetoptLong::NO_ARGUMENT],
- ['--noop' , GetoptLong::NO_ARGUMENT],
- ['--verbose' , GetoptLong::NO_ARGUMENT],
- ['--help' , GetoptLong::NO_ARGUMENT])
-begin
- parser.each_option do |name, arg|
- eval "$OPT_#{name.sub(/^--/, '').gsub(/-/, '_').upcase} = '#{arg}'"
- end
-rescue
- raise "getoptlong"
-end
-usage() if defined?($OPT_HELP)
-
-class TdiaryInstall
- attr_accessor :tdiarymaster
- attr_accessor :tdconfig
- attr_accessor :lang
- attr_reader :euid
- attr_accessor :username
- attr_accessor :diarydir
- attr_accessor :httpdir
- attr_reader :passwd
- attr_accessor :fileutilOptions
- attr_accessor :author_name
- attr_accessor :author_mail
- attr_reader :author_host
- def initialize
- @passwd = Etc.getpwuid()
- @euid = @passwd.uid
- @username =(@passwd.name)
- @diarydir = 'diary'
- @httpdir = 'public_html'
- @fileutilOptions = []
- @author_name = @passwd.gecos
- @author_host = "#{`hostname`.chomp}"
- @author_mail = "#{@username}@#{`hostname`.chomp}"
- end
-
- def username=(value)
- @username = value
- @passwd = Etc.getpwnam(@username)
- @author_name = @passwd.gecos
- @author_mail = "#{@username}@#{`hostname`.chomp}"
- end
-
- def lang=(value)
- case value
- when 'tdiary.conf-en' , 'en'
- @lang = 'en'
- @tdconfig = 'tdiary.conf-en'
- when 'tdiary.conf-ja' , 'ja'
- @lang = 'ja'
- @tdconfig = 'tdiary.conf-ja'
- else
- raise "Unknown Language : #{value}"
- end
- end
-
- def installAll
- raise "You can not use tDiary for superuser." if @passwd.uid == 0
-
- echo "************************************************************\n"
- echo "Starting tDiary for FreeBSD user directory installation ...\n"
- prepareDirs()
-
- echo "Copy tDiary ...\n"
- if $OPT_SYMLINK then
- linkBaseFile()
- else
- copyBaseFile()
- end
-
- installConfig()
- setPermissions() if ! defined?($OPT_NOOP)
-
- echo "***\n"
- echo "You have to execute the following commands:\n"
- echo " % /usr/local/sbin/htpasswd -c #{@passwd.dir}/.htpasswd #{@username}\n\n"
- echo "Please read #{@tdiarymaster}/README\n"
- echo " for additional information.\n"
- echo "************************************************************\n"
- end
-
- def prepareDirs
- if ! FileTest.exist?("#{@passwd.dir}/#{@diarydir}")
- FileUtils16.mkdir_p("#{@passwd.dir}/#{@diarydir}", *@fileutilOptions)
- end
- if ! FileTest.exist?("#{@passwd.dir}/#{@httpdir}/#{@diarydir}")
- FileUtils16.mkdir_p("#{@passwd.dir}/#{@httpdir}/#{@diarydir}", *@fileutilOptions)
- end
- end
-
- def linkBaseFile
- FileUtils16.cp_r("#{@tdiarymaster}/plugin", "#{@passwd.dir}/#{@httpdir}/#{@diarydir}", :preserve, *@fileutilOptions)
- FileUtils16.ln_s("#{@tdiarymaster}/theme", "#{@passwd.dir}/#{@httpdir}/#{@diarydir}", *@fileutilOptions)
- FileUtils16.ln_s("#{@tdiarymaster}/doc", "#{@passwd.dir}/#{@httpdir}/#{@diarydir}", *@fileutilOptions)
- tempfile = Tempfile.new("index.rb")
- tempfile.write "#!/usr/local/bin/ruby\nrequire '#{@tdiarymaster}/index'\n"
- tempfile.close
- FileUtils16.cp(tempfile.path, "#{@passwd.dir}/#{@httpdir}/#{@diarydir}/index.rb", *@fileutilOptions)
- FileUtils16.chmod(0755, "#{@passwd.dir}/#{@httpdir}/#{@diarydir}/index.rb", *@fileutilOptions)
- tempfile = Tempfile.new("update.rb")
- tempfile.write "#!/usr/local/bin/ruby\nrequire '#{@tdiarymaster}/update'\n"
- tempfile.close
- FileUtils16.cp(tempfile.path, "#{@passwd.dir}/#{@httpdir}/#{@diarydir}/update.rb", *@fileutilOptions)
- FileUtils16.chmod(0755, "#{@passwd.dir}/#{@httpdir}/#{@diarydir}/update.rb", *@fileutilOptions)
- end
-
- def copyBaseFile
- FileUtils16.cp_r("#{@tdiarymaster}/doc", "#{@passwd.dir}/#{@httpdir}/#{@diarydir}", :preserve, *@fileutilOptions)
- FileUtils16.cp_r("#{@tdiarymaster}/erb", "#{@passwd.dir}/#{@httpdir}/#{@diarydir}", :preserve, *@fileutilOptions)
- FileUtils16.cp_r("#{@tdiarymaster}/misc", "#{@passwd.dir}/#{@httpdir}/#{@diarydir}", :preserve, *@fileutilOptions)
- FileUtils16.cp_r("#{@tdiarymaster}/plugin", "#{@passwd.dir}/#{@httpdir}/#{@diarydir}", :preserve, *@fileutilOptions)
- FileUtils16.cp_r("#{@tdiarymaster}/skel", "#{@passwd.dir}/#{@httpdir}/#{@diarydir}", :preserve, *@fileutilOptions)
- FileUtils16.cp_r("#{@tdiarymaster}/tdiary", "#{@passwd.dir}/#{@httpdir}/#{@diarydir}", :preserve, *@fileutilOptions)
- FileUtils16.cp_r("#{@tdiarymaster}/theme", "#{@passwd.dir}/#{@httpdir}/#{@diarydir}", :preserve, *@fileutilOptions)
- FileUtils16.cp("#{@tdiarymaster}/index.rb", "#{@passwd.dir}/#{@httpdir}/#{@diarydir}", *@fileutilOptions)
- FileUtils16.chmod(0755, "#{@passwd.dir}/#{@httpdir}/#{@diarydir}/index.rb", *@fileutilOptions)
- FileUtils16.cp("#{@tdiarymaster}/update.rb", "#{@passwd.dir}/#{@httpdir}/#{@diarydir}", *@fileutilOptions)
- FileUtils16.chmod(0755, "#{@passwd.dir}/#{@httpdir}/#{@diarydir}/update.rb", *@fileutilOptions)
- FileUtils16.cp("#{@tdiarymaster}/tdiary.rb", "#{@passwd.dir}/#{@httpdir}/#{@diarydir}", *@fileutilOptions)
- FileUtils16.cp("#{@tdiarymaster}/README", "#{@passwd.dir}/#{@httpdir}/#{@diarydir}", *@fileutilOptions)
- end
-
- def installConfig
- tempfile = Tempfile.new("tdiary.conf-ja")
- tempfile.write tdiaryConfReplace("#{@tdiarymaster}/tdiary.conf.sample")
- tempfile.close
- FileUtils16.cp(tempfile.path, "#{@passwd.dir}/#{@httpdir}/#{@diarydir}/tdiary.conf-ja", *@fileutilOptions)
-
- tempfile = Tempfile.new("tdiary.conf-en") # sample configuration for English Environment
- tempfile.write tdiaryConfReplace("#{@tdiarymaster}/misc/i18n/tdiary.conf.sample-en")
- tempfile.close
- FileUtils16.cp(tempfile.path, "#{@passwd.dir}/#{@httpdir}/#{@diarydir}/tdiary.conf-en", *@fileutilOptions)
-
- if ! FileTest.exist?("#{@passwd.dir}/#{@httpdir}/#{@diarydir}/tdiary.conf")
- FileUtils16.cp("#{@passwd.dir}/#{@httpdir}/#{@diarydir}/#{@tdconfig}", "#{@passwd.dir}/#{@httpdir}/#{@diarydir}/tdiary.conf", *@fileutilOptions)
- end
-
- tempfile = Tempfile.new("dot.htaccess")
- tempfile.write dothtaccessReplace("#{@tdiarymaster}/dot.htaccess")
- tempfile.close
- FileUtils16.cp(tempfile.path, "#{@passwd.dir}/#{@httpdir}/#{@diarydir}/dot.htaccess", *@fileutilOptions)
- if ! FileTest.exist?("#{@passwd.dir}/#{@httpdir}/#{@diarydir}/.htaccess")
- FileUtils16.cp("#{@passwd.dir}/#{@httpdir}/#{@diarydir}/dot.htaccess", "#{@passwd.dir}/#{@httpdir}/#{@diarydir}/.htaccess", *@fileutilOptions)
- end
- end
-
- def setPermissions
- FileUtils16.chmod(0777, "#{@passwd.dir}/#{@diarydir}", *@fileutilOptions) if ! defined?($OPT_SUEXEC)
- FileUtils16.chmod(0777, "#{@passwd.dir}/#{@httpdir}/#{@diarydir}", *@fileutilOptions) if ! defined?($OPT_SUEXEC)
- FileUtils16.rm("#{@passwd.dir}/#{@httpdir}/#{@diarydir}/tdiary-FreeBSD.sh", :force, *@fileutilOptions)
-
- if @euid == 0 then
- Find.find("#{@passwd.dir}/#{@diarydir}", "#{@passwd.dir}/#{@httpdir}/#{@diarydir}") do |f|
- File.chown(@passwd.uid, @passwd.gid, f)
- end
- if File::Stat.new("#{@passwd.dir}/#{@httpdir}").uid == 0
- File.chown(@passwd.uid, @passwd.gid, "#{@passwd.dir}/#{@httpdir}")
- end
- end
- end
-
- def echo(s)
- STDOUT.print s if ! defined?($OPT_QUIET)
- end
-
- def tdiaryConfReplace(filename)
- s = ''
- File.open(filename) { |fp|
- fp.each { |line|
- line = "@data_path = '#{@passwd.dir}/#{@diarydir}'\n" if line =~ /^\@data_path\s/
- line = "@author_name = '#{@author_name}'\n" if line =~ /^\@author_name\s/
- line = "@author_mail = '#{@author_mail}'\n" if line =~ /^\@author_mail\s/
- line = "@html_title = '#{@author_name} diary'\n" if line =~ /^\@html_title\s/
- line = "@index_page = 'http://#{@author_host}/~#{@username}\/'" if line =~ /^\@index_page\s/
- s += line
- }
- }
- s
- end
-
- def dothtaccessReplace(filename)
- s = ''
- File.open(filename) { |fp|
- fp.each { |line|
- line = "\tAuthUserFile #{@passwd.dir}/.htpasswd\n" if line =~ /^\s*AuthUserFile\s/
- line = "\tRequire user #{@username}\n" if line =~ /^\s*Require user\s/
- line = "Options +FollowSymLinks\n" if line =~ /^\#Options \+FollowSymLinks/ && $OPT_SYMLINK
- s += line
- }
- }
- s
- end
-end
-
-tdiaryinst = TdiaryInstall.new
-tdiaryinst.tdiarymaster = $OPT_TDIARYMASTER
-tdiaryinst.lang = $OPT_LANG
-tdiaryinst.username = $OPT_USER if defined?($OPT_USER)
-tdiaryinst.diarydir = $OPT_DIARYDIR if defined?($OPT_DIARYDIR)
-tdiaryinst.httpdir = $OPT_HTTPDIR if defined?($OPT_HTTPDIR)
-tdiaryinst.author_name = $OPT_NAME if defined?($OPT_NAME)
-tdiaryinst.author_mail = $OPT_MAIL if defined?($OPT_MAIL)
-tdiaryinst.fileutilOptions.push(:noop) if defined?($OPT_NOOP)
-tdiaryinst.fileutilOptions.push(:verbose) if defined?($OPT_VERBOSE)
-
-tdiaryinst.installAll
-
-exit 0