Tadashi Okoshi
slash****@users*****
2006年 2月 23日 (木) 21:41:37 JST
Index: affelio/lib/Affelio.pm
diff -u affelio/lib/Affelio.pm:1.38 affelio/lib/Affelio.pm:1.39
--- affelio/lib/Affelio.pm:1.38 Sun Jan 29 02:43:10 2006
+++ affelio/lib/Affelio.pm Thu Feb 23 21:41:37 2006
@@ -14,15 +14,15 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
-# $Id: Affelio.pm,v 1.38 2006/01/28 17:43:10 slash5234 Exp $
+# $Id: Affelio.pm,v 1.39 2006/02/23 12:41:37 slash5234 Exp $
package Affelio;
{
use strict;
use lib("../extlib");
- use lib("../../extlib");
use DBI;
use Error qw(:try);
+
use lib("../lib");
use Affelio::SNS::FriendManager;
use Affelio::misc::Debug;
@@ -79,6 +79,8 @@
###################################
#Caller
###################################
+ #caller= "" ... if AffelioCore called me.
+ #caller= "install_name"... if application "install_name" called me.
my $caller = "";
$caller = $param{Caller};
if($caller){
@@ -91,8 +93,6 @@
$caller="";
}
debug_print("Affelio::new: caller= [$caller] ");
- #caller= "" ... if AffelioCore called me.
- #caller= "install_name"... if application "install_name" called me.
###################################
#Managers
@@ -172,6 +172,8 @@
return $self;
}
+
+
######################################################################
#Destructor
######################################################################
@@ -202,8 +204,11 @@
my $self=shift;
if(! ($self->{db}) ){
+ debug_print("Affelio::getDB: db is empty... let's open.");
$self->openDB();
+ debug_print("Affelio::getDB: db is empty... opened.");
}
+ debug_print("Affelio::getDB: db=[$self->{db}]");
return($self->{db});
}
@@ -219,14 +224,24 @@
require Config::Tiny;
my $DBConfig = Config::Tiny->new();
$DBConfig = Config::Tiny->read("$self->{site__user_dir}/db.cfg");
- my $rootproperty = $DBConfig->{_}->{rootproperty};
my $db_type = $DBConfig->{db}->{type};
+ $self->{site__db_type} = $db_type;
my $db_dbname = $DBConfig->{db}->{dbname};
my $db_username = $DBConfig->{db}->{username};
my $db_password = $DBConfig->{db}->{password};
my $db_hostname = $DBConfig->{db}->{hostname};
my $db_port = $DBConfig->{db}->{port};
+ debug_print("Affelio::openDB: start.");
+ debug_print("Affelio::openDB: db_type = $db_type");
+ debug_print("Affelio::openDB: db_dbname = $db_dbname");
+ debug_print("Affelio::openDB: db_username = $db_username");
+ debug_print("Affelio::openDB: db_password = $db_password");
+ debug_print("Affelio::openDB: db_hostname = $db_hostname");
+ debug_print("Affelio::openDB: db_port = $db_port");
+
+ #################################################
+ #MySQL
if($db_type eq "mysql"){
my $dsn = "DBI:mysql:$db_dbname:$db_hostname:$db_port";
@@ -237,9 +252,14 @@
throw Affelio::exception::DBException("MySQL open error");
}
+ #################################################
+ #SQLite
}elsif ($db_type eq "sqlite"){
+ my $dbfile = "$self->{site__user_dir}/DB.sqlite";
+ $dbfile =~ s|//|/|g;
+
eval{
- $self->{db} = DBI->connect("dbi:SQLite:dbname=$self->{site__user_dir}/DB.sqlite", "", "") or die("Cannot connect to SQLite: " . $DBI::errstr);
+ $self->{db} = DBI->connect("dbi:SQLite:dbname=$dbfile", "", "") or die("Cannot connect to SQLite: " . $DBI::errstr);
};
if($@){
throw Affelio::exception::DBException("SQLite open error");
@@ -248,10 +268,11 @@
throw Affelio::exception::SystemException("DB type not specified");
}
+ #################################################
+ #Error?
if(!defined($self->{db})){
throw Affelio::exception::DBException("DB Handle not defined after open. very weird.");
}
-
eval{
$self->{db}->{RaiseError} = 1;
};
@@ -259,6 +280,7 @@
throw Affelio::exception::DBException("DB Error Setting");
}
+ debug_print("Affelio::openDB: end.");
}
######################################################################
@@ -370,16 +392,25 @@
#load_SessionManager
######################################################################
sub load_SessionManager{
- require Affelio::Managing::SessionManager;
+ my $self=shift;
- my $self = shift;
- try{
- $self->{sm} = new Affelio::Managing::SessionManager($self);
+ debug_print("Affelio::loadSM: start.");
+
+ if($self->{site__farm_mode} eq "AFE2"){
+ debug_print("Affelio::loadSM: getting SM from AFE2...");
+
+ $self->{sm} = $self->{farm_con}->getSM();
+ if(!$self->{sm}){
+ throw Affelio::exception::SystemException("affelio.cfg: cannot obtain SessionManager from FarmConnector.");
+ }
+
+ }else{
+ debug_print("Affelio::loadSM: loading normal SM....");
+ require Affelio::Managing::SessionManager;
+ $self->{sm} = new Affelio::Managing::SessionManager;
+ $self->{sm}->init($self);
}
- catch Error with {
- my $ex = shift;
- throw Affelio::exception::SystemException("Cannot load session manager: $ex");
- };
+ debug_print("Affelio::loadSM: end.");
}
######################################################################
@@ -624,6 +655,7 @@
}
+
######################################################################
#get_farm_connecter{
######################################################################
@@ -669,71 +701,186 @@
######################################################################
#read_site_config
- # read Affelio.cfg file
+ # read Affelio.cfg / login.cfg file
######################################################################
sub read_site_config{
my $self = shift;
debug_print("Affelio::read_site_config: start.");
my $wi = new Affelio::misc::WebInput();
-
require Config::Tiny;
my $Config = Config::Tiny->new();
+ #################################################################
+ #affelio.cfg
+ #################################################################
$Config = Config::Tiny->read($self->{cfg_path});
if($@ || !$Config){
throw Affelio::exception::SystemException("affelio.cfg not found");
}
- my $rootproperty = $Config->{_}->{rootproperty};
+ ##############################################
+ #[site]
+ ##############################################
+ #site_fs_root
$self->{site__fs_root} = $Config->{site_config}->{fs_root};
if($self->{site__fs_root} =~ /(.*)\/$/){
$self->{site__fs_root} = $1;
}
+
+ #site_web_root
$self->{site__web_root} = $Config->{site_config}->{web_root};
if($self->{site__web_root} =~ /(.*)\/$/){
$self->{site__web_root} = $1;
}
+ #locale
#Oh well, this config parameter has been "char_set" for a while..
#For now, locale = char_set
$self->{site__locale} = $Config->{site_config}->{char_set};
if($self->{site__locale} eq ""){
$self->{site__locale} = "ja";
}
- debug_print("Affelio::read_site_config: site__locale =[$self->{site__locale}]");
+ #template
$self->{site__template} = $Config->{site_config}->{template};
if($self->{site__template} eq ""){
$self->{site__template} = "default";
}
- #$self->{cmd__nkf} = $Config->{command}->{nkf};
- $self->{cmd__sendmail} = $Config->{command}->{sendmail};
-
- #Determine userdata/..../ directory
- try{
+ #farm_mode
+ $self->{site__farm_mode} = $Config->{site_config}->{farm_mode};
+ debug_print("Affelio::read_site_config: farm_mode=[$self->{site__farm_mode}]");
+ $self->{farm__connecter_path} =
+ $Config->{affelio_farm}->{farm_connecter};
+
+ #Detect AFE (not 2)
+ if(($self->{site__farm_mode} eq "")
+ && ($self->{farm__connecter_path} ne "")){
+ $self->{site__farm_mode} = "AFE";
+ }
+
+ #platform
+ $self->{site__platform} = $Config->{site_config}->{platform};
+ debug_print("Affelio::read_site_config: platform=[$self->{site__platform}]");
+
+ ##############################################
+ #AFE
+ ##############################################
+ if($self->{site__farm_mode} eq "AFE2"){
+
+ ####################
+ #Load farm connecter
+ ####################
+ my $clsname = "";
+ $clsname = $self->{farm__connecter_path};
+ debug_print("Affelio::read_site_config: AFE_con=[$clsname]");
+
+ eval "require $clsname; import $clsname;";
+ if($@){ throw Affelio::exception::SystemException("Could not load [$clsname]"); }
+ debug_print("Affelio::read_site_config: AFE_con [$clsname] loaded.");
+ $self->{farm_con} = eval "new $clsname;";
+ $self->{farm_con}->init($self);
+
+ ####################
+ #farm__fs_data_root
+ ####################
+ $self->{farm__fs_data_root} = $self->{farm_con}->get_fsdataroot();
+ if(!$self->{farm__fs_data_root}){
+ throw Affelio::exception::SystemException("affelio.cfg: cannot obtain fs_data_root from FarmConnector.");
+ }
+
+ ####################
+ #farm__web_users_root
+ ####################
+ $self->{farm__web_users_root} = $self->{farm_con}->get_webusersroot();
+ if(!$self->{farm__web_users_root}){
+ throw Affelio::exception::SystemException("affelio.cfg: cannot obtain web_users_root from FarmConnector.");
+ }
+ $self->{farm__web_users_root} =~ s/\/$//;
+
+ ####################
+ #farm__cur_user
+ ####################
+ $self->{farm__cur_user} = $ENV{'REDIRECT_AF_USERNAME'};
+ if(!$self->{farm__cur_user}){
+ throw Affelio::exception::SystemException("AFE2/farm_cur_user not set.");
+ }
+
+
+ }
+ #if(AFE2)
+
+ ##############################################
+ #site__user_afid
+ ##############################################
+ if($self->{site__farm_mode} eq "AFE2"){
+ $self->{site__user_afid} =
+ $self->{farm__web_users_root} . "/"
+ . $self->{farm__cur_user};
+ }else{
+ $self->{site__user_afid} = $self->{site__web_root};
+ }
+ debug_print("Affelio::read_site_config: site__user_afid = [$self->{site__user_afid}]");
+
+ ##############################################
+ #Determine the user's userdata directory
+ ##############################################
+ if($self->{site__farm_mode} eq "AFE2"){
$self->{site__user_dir} =
- get_userdir("$self->{top_dir}/userdata");
- }catch Error with{
- my $e = shift;
- throw ($e);
- };
+ $self->{farm__fs_data_root} . "/users/"
+ . $self->{farm__cur_user} . "/userdata/";
+ }else{
+ try{
+ $self->{site__user_dir} =
+ get_userdir("$self->{site__fs_root}/userdata");
+ }catch Error with{
+ my $e = shift;
+ throw $e;
+ };
+ }
+ debug_print("Affelio::read_site_config: site__user_dir = [$self->{site__user_dir}]");
- #Load username and password
+ ##############################################
+ #Determine templates_dyn dir
+ ##############################################
+ if($self->{site__farm_mode} eq "AFE2"){
+ $self->{site__tmpldyn_dir} =
+ $self->{farm__fs_data_root} . "/users/"
+ . $self->{farm__cur_user} . "/templates_dyn/";
+ }else{
+ $self->{site__tmpldyn_dir} = "$self->{site__fs_root}/templates_dyn/";
+ }
+ debug_print("Affelio::read_site_config: site_tmpldyn_dir = [$self->{site__tmpldyn_dir}]");
+
+ ##############################################
+ #[command]
+ ##############################################
+ $self->{cmd__sendmail} = $Config->{command}->{sendmail};
+
+ #################################################################
+ #login.cfg
+ #################################################################
+
+ ##############################################
+ #Load user's login username / password
+ ##############################################
my $Config2 = Config::Tiny->new();
$Config2 = Config::Tiny->read("$self->{site__user_dir}/login.cfg");
if($@ || !$Config2){
throw Affelio::exception::SystemException("login.cfg not found");
}
- my $rootproperty2 = $Config2->{_}->{rootproperty};
+
$self->{site__username} = $wi->PTN_nickname($Config2->{auth}->{username});
$self->{site__password} = $Config2->{auth}->{password};
+
+ #Table name prefix
+ if($self->{site__farm_mode} eq "AFE2"){
+ $self->{site__dbtbl_prefix} = "AF" . $self->{site__username};
+ }else{
+ $self->{site__dbtbl_prefix} = "AF" . "user";
+ }
- #Determine session/..../ directory
- $self->{site__session_dir} = $wi->PTN_dirname("$self->{top_dir}/session");
- debug_print("Affelio::read_site_config: session_dir = [$self->{site__session_dir}]");
- debug_print("Affelio::read_site_config: end.");
}
######################################################################
@@ -842,8 +989,8 @@
$owner_mode_url
= $self->getAM->{apps}->{$self->{caller}}->{owner_index};
}else{
- $guest_mode_url= $self->{site__web_root} . "/index.cgi?mode=index";
- $owner_mode_url= $self->{site__web_root} . "/admin.cgi";
+ $guest_mode_url= $self->{site__user_afid} . "/index.cgi?mode=index";
+ $owner_mode_url= $self->{site__user_afid} . "/admin.cgi";
}
if($owner_mode_selected){
@@ -895,20 +1042,20 @@
if($self->{guest_owner_switch} eq "owner"){
####Owner
if($selected eq "true" ){
- $dest_url = $self->{site__web_root} . "/index.cgi?mode=index";
+ $dest_url = $self->{site__user_afid} . "/index.cgi?mode=index";
}else{
if($visitor_type eq "self"){
- $dest_url = $self->{site__web_root} . "/admin.cgi";
+ $dest_url = $self->{site__user_afid} . "/admin.cgi";
}
}
}else{
####Guest
if($selected eq "true" ){
if($visitor_type eq "self"){
- $dest_url = $self->{site__web_root} . "/admin.cgi";
+ $dest_url = $self->{site__user_afid} . "/admin.cgi";
}
}else{
- $dest_url = $self->{site__web_root} . "/index.cgi?mode=index";
+ $dest_url = $self->{site__user_afid} . "/index.cgi?mode=index";
}
}
@@ -944,7 +1091,7 @@
$selected = "";
}
- my $dest_url = "$self->{site__web_root}/apps/$this_app{'install_name'}/";
+ my $dest_url = "$self->{site__user_afid}/apps/$this_app{'install_name'}/";
if($self->{guest_owner_switch} eq "owner"){
#Owner
if($selected eq "true"){
@@ -967,8 +1114,8 @@
{'selected' => $selected,
'name' => $this_app{'install_title'},
'url' => $dest_url,
- 'image_normal' => "$self->{site__web_root}/apps/$this_app{'install_name'}/icons/normal.jpg",
- 'image_over' => "$self->{site__web_root}/apps/$this_app{'install_name'}/icons/over.jpg"
+ 'image_normal' => "$self->{site__user_afid}/apps/$this_app{'install_name'}/icons/normal.jpg",
+ 'image_over' => "$self->{site__user_afid}/apps/$this_app{'install_name'}/icons/over.jpg"
}
);
}
@@ -1001,16 +1148,16 @@
my $sbst = $af->{lh}->maketext($text_value, $param_value);
- debug_print("Affelio::translate tag_body = [$tag_body]\n");
- debug_print("Affelio::translate \t text=[$text_value]\n");
- debug_print("Affelio::translate \t param=[$param_value]\n");
- debug_print("Affelio::translate \t sbst=[$sbst]\n");
+# debug_print("Affelio::translate tag_body = [$tag_body]\n");
+# debug_print("Affelio::translate \t text=[$text_value]\n");
+# debug_print("Affelio::translate \t param=[$param_value]\n");
+# debug_print("Affelio::translate \t sbst=[$sbst]\n");
$mesg =~ s/\Q<AF_M $tag_body>\E/$sbst/g;
- debug_print("Affelio::loop end.");
+# debug_print("Affelio::loop end.");
}
- debug_print("Affelio::translate end.");
+# debug_print("Affelio::translate end.");
return($mesg);
}
Index: affelio/lib/AffelioApp.pm
diff -u affelio/lib/AffelioApp.pm:1.18 affelio/lib/AffelioApp.pm:1.19
--- affelio/lib/AffelioApp.pm:1.18 Mon Dec 19 16:10:19 2005
+++ affelio/lib/AffelioApp.pm Thu Feb 23 21:41:37 2006
@@ -14,7 +14,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
-# $Id: AffelioApp.pm,v 1.18 2005/12/19 07:10:19 slash5234 Exp $
+# $Id: AffelioApp.pm,v 1.19 2006/02/23 12:41:37 slash5234 Exp $
package AffelioApp;
{
@@ -43,17 +43,27 @@
my $app__fs_root = $param{ConfigDir};
my $cfg_path = "$app__fs_root/AF_app.cfg";
- my $install_name = $app__fs_root;
- $install_name =~ s|/(.*)/||g;
+ my $install_name;
+ if($ENV{REDIRECT_URL}){
+ #AFE2
+ $install_name = $ENV{REDIRECT_URL};
+ $install_name =~ s|/([a-zA-Z0-9\-\_\.]+)$||g;
+ $install_name =~ /\/([a-zA-Z0-9\-\_\.]+)$/;
+ $install_name = $1;
+ }else{
+ $install_name = $app__fs_root;
+ $install_name =~ s|/(.*)/||g;
+ }
my $af = new Affelio(ConfigDir => "$app__fs_root/../../config/",
Caller => $install_name);
- my $app__web_root = "$af->{site__web_root}/apps/$install_name";
+ my $app__web_root = "$af->{site__user_afid}/apps/$install_name";
debug_print("AffelioApp::new: ConfigDir =$app__fs_root");
debug_print("AffelioApp::new: cfg_path =$cfg_path");
debug_print("AffelioApp::new: install_name=$install_name");
+# debug_print("AffelioApp::new: user_afid=$app__user_afid");
debug_print("AffelioApp::new: web_root=$app__web_root");
debug_print("AffelioApp::new: fs_root =$app__fs_root");
@@ -251,7 +261,7 @@
my $info_name = shift;
if($info_name eq "web_root"){
- return($self->{af}->{site__web_root});
+ return($self->{af}->{site__user_afid});
}
if($info_name eq "locale"){
return($self->{af}->{site__locale});
@@ -270,7 +280,7 @@
if($info_name eq "nickname"){
return($self->{af}->{user__nickname});
}elsif($info_name eq "afid"){
- return($self->{af}->{site__web_root});
+ return($self->{af}->{site__user_afid});
}
return;
}
@@ -280,18 +290,27 @@
######################################################################
sub get_HTML_header{
my $self = shift;
- my $app__page_title = shift;
+
+ my $app__page_title = "";
+
+ my $argc = @_;
+ if($argc == 1){
+ $app__page_title = shift;
+ }else{
+
+ }
+
my $af = $self->{af};
#Set template file name
- my $TMPL_FILE = "$af->{site__fs_root}/templates_dyn/Header.tmpl";
+ my $TMPL_FILE = "$af->{site__tmpldyn_dir}/Header.tmpl";
#Set data for template
my %output_data = ();
$output_data{'app__css_path'} = $self->{app__web_root};
$output_data{'app__page_title'} = $app__page_title;
$output_data{"site__skin_dir"} = $af->{site__web_root} . "/skins/" . $af->{userpref__skin};
- $output_data{'site__web_root'} = $af->{site__web_root};
+ $output_data{'site__web_root'} = $af->{site__user_afid};
$output_data{'site__locale'} = $af->{site__locale};
$af->get_module_list(\%output_data, $self->{visitor_afid},$self->{visitor_type});
@@ -321,7 +340,7 @@
my $af = $self->{af};
#Set template file name
- my $TMPL_FILE = "$af->{site__fs_root}/templates_dyn/Footer.tmpl";
+ my $TMPL_FILE = "$af->{site__tmpldyn_dir}/Footer.tmpl";
my $tmpl = new HTML::Template(filename => $TMPL_FILE);
my $final_out = "</div><!--afPubMain-->"
@@ -353,7 +372,7 @@
my $ret="";
if(($name eq "access_control") && ($self->{visitor_type} eq "self")){
- $ret = $af->{site__web_root} . "/admin.cgi?mode=access_control_apps&mode2=show_app&app_name=" . $self->{install_name};
+ $ret = $af->{site__user_afid} . "/admin.cgi?mode=access_control_apps&mode2=show_app&app_name=" . $self->{install_name};
}
return($ret);