externes DB Backend einbinden?

Hilfe zu Znuny Problemen aller Art
Locked
Nexter
Znuny newbie
Posts: 60
Joined: 19 Jan 2011, 17:23
Znuny Version: 3.2.8

externes DB Backend einbinden?

Post by Nexter »

Hallo Gemeinde,

ich versuche vergeblich eine externe Datenbank als Kunden-Backend an das OTRS 3.X zu bekommen leider ohne Erfolg.
Die Doku habe ich gelesen und bin der Meinung dass da ne Menge Infos fehlen. Die Suche habe ich auch benutzt, leider komm ich einfach nicht drauf.
Darum bitte ich hier einfach mal um Hilfe:

Also ich habe eine MySQL Datenbank auf einem anderen Sytem laufen worin die Kundendaten stehen. Diese sollen sich dann anmelden können.
Ich habe dazu die Datei Config.pm innerhalb der Funktion Load angepasst.
Ansonsten habe ich keinerlei Infos wo man noch etwas anpassen müsste. Eigentlich wollte ich mehrere Backends anbinden also mit der Erweiterung um einen Counter beim Namen CustomerUser1, ...2 etc.
Kann es sein dass da noch weiter Ordner angelegt werden müssen???

So sieht das grad bei mir aus:

Code: Select all

sub Load {
    my $Self = shift;
    # ---------------------------------------------------- #
    # ---------------------------------------------------- #
    #                                                      #
    #         Start of your own config options!!!          #
    #                                                      #
    # ---------------------------------------------------- #
    # ---------------------------------------------------- #
	
	# Zeigt Agenten & Kunden an welche gerade Online sind
    $Self->{'CustomerFrontend::NotifyModule'}->{'1-ShowAgentOnline'} = {
        Module      => 'Kernel::Output::HTML::NotificationAgentOnline',
        ShowEmail   => 1,
        IdleMinutes => 60,
    };

# CustomerUser
    # (customer user database backend and settings)
    $Self->{CustomerUser} = {
        Name   => 'Database Backend',
        Module => 'Kernel::System::CustomerUser::DB',
        Params => {
            # if you want to use an external database, add the
            # required settings
#            DSN => 'DBI:odbc:yourdsn',
            DSN => 'DBI:mysql:database=meineDB;host=meineIP',
            User => 'root',
            Password => 'meinPW',
            Table => 'meineTable',
            # CaseSensitive will control if the SQL statements need LOWER()
            #   function calls to work case insensitively. Setting this to
            #   1 will improve performance dramatically on large databases.
            CaseSensitive => 0,
        },

        # customer uniq id
        CustomerKey => 'login',

        # customer #
        CustomerID             => 'customer_id',
        CustomerValid          => 'valid_id',
        CustomerUserListFields => [ 'first_name', 'last_name', 'email' ],

#        CustomerUserListFields => ['login', 'first_name', 'last_name', 'customer_id', 'email'],
        CustomerUserSearchFields           => [ 'login', 'first_name', 'last_name', 'customer_id' ],
        CustomerUserSearchPrefix           => '*',
        CustomerUserSearchSuffix           => '*',
        CustomerUserSearchListLimit        => 250,
        CustomerUserPostMasterSearchFields => ['email'],
        CustomerUserNameFields     => [ 'title', 'first_name', 'last_name' ],
        CustomerUserEmailUniqCheck => 1,

#        # show now own tickets in customer panel, CompanyTickets
#        CustomerUserExcludePrimaryCustomerID => 0,
#        # generate auto logins
#        AutoLoginCreation => 0,
#        # generate auto login prefix
#        AutoLoginCreationPrefix => 'auto',
#        # admin can change customer preferences
#        AdminSetPreferences => 1,
#        # use customer company support (reference to company, See CustomerCompany settings)
#        CustomerCompanySupport => 1,
#        # cache time to live in sec. - cache any database queries
#        CacheTTL => 0,
#        # just a read only source
#        ReadOnly => 1,
        Map => [
            # note: Login, Email and CustomerID needed!
            # var, 					frontend, 		storage,		shown (1=always,2=lite), 	required, 	storage-type, 	http-link,	readonly, http-link-target
            #[ 'UserTitle',      	'Title',      	'title',    	1, 							0, 			'var', 			'', 		0 ],
            [ 'UserFirstname',  	'Firstname',  	'name', 		1, 							1, 			'var', 			'', 		0 ],
            [ 'UserLastname',   	'Lastname',   	'usertype', 	1, 							1, 			'var', 			'', 		0 ],
            [ 'UserLogin',      	'Username',   	'username', 	1, 							1, 			'var', 			'', 		0 ],
            [ 'UserPassword',   	'Password',   	'password', 	0, 							0, 			'var', 			'', 		0 ],
            [ 'UserEmail',      	'Email',      	'email',    	1, 							1, 			'var', 			'', 		0 ],
#           [ 'UserEmail',      	'Email', 		'email',    	1, 							1,			'var', 			'$Ev{"CGIHandle"}?Action=AgentTicketCompose&ResponseID=1&TicketID=$Data{"TicketID"}&ArticleID=$Data{"ArticleID"}', 0 ],
            [ 'UserCustomerID', 	'CustomerID', 	'id', 			0, 							1, 			'var', 			'',			0 ],
#           [ 'UserCustomerIDs', 	'CustomerIDs', 	'customer_ids', 1, 							0, 			'var', 			'', 		0 ],
            #[ 'UserPhone',        	'Phone',       	'phone',    	1, 							0, 			'var', 			'',			0 ],
            #[ 'UserFax',          	'Fax',         	'fax',      	1, 							0, 			'var', 			'',			0 ],
            #[ 'UserMobile',       	'Mobile',      	'mobile',   	1, 							0, 			'var', 			'',			0 ],
            #[ 'UserStreet',       	'Street',      	'street',   	1, 							0, 			'var',	 		'', 		0 ],
            #[ 'UserZip',          	'Zip',         	'zip',      	1, 							0, 			'var', 			'', 		0 ],
            #[ 'UserCity',         	'City',        	'city',     	1,							0, 			'var', 			'', 		0 ],
            #[ 'UserCountry',      	'Country',     	'country',  	1,							0, 			'var', 			'', 		0 ],
            #[ 'UserComment',      	'Comment',     	'comments', 	1,							0, 			'var', 			'', 		0 ],
            #[ 'ValidID',          	'Valid',       	'valid_id',		0,							1,			'int',			'',			0 ],
        ],

        # default selections
        Selections => {

#            UserTitle => {
#                'Mr.' => 'Mr.',
#                'Mrs.' => 'Mrs.',
#            },
        },
    };
	
    # ---------------------------------------------------- #
    # database settings                                    #
    # ---------------------------------------------------- #
    # DatabaseHost
    # (The database host.)
    $Self->{'DatabaseHost'} = 'localhost';
    # Database
    # (The database name.)
    $Self->{'Database'} = 'otrs';
    # DatabaseUser
    # (The database user.)
    $Self->{'DatabaseUser'} = 'otrs';
    # DatabasePw
    # (The password of database user. You also can use bin/otrs.CryptPassword.pl
    # for crypted passwords.)
    $Self->{'DatabasePw'} = 'hot';
    # DatabaseDSN
    # (The database DSN for MySQL ==> more: "man DBD::mysql")
    $Self->{DatabaseDSN} = "DBI:mysql:database=$Self->{Database};host=$Self->{DatabaseHost};";
	

    # (The database DSN for PostgreSQL ==> more: "man DBD::Pg")
    # if you want to use a local socket connection
#    $Self->{DatabaseDSN} = "DBI:Pg:dbname=$Self->{Database};";
    # if you want to use a tcpip connection
#    $Self->{DatabaseDSN} = "DBI:Pg:dbname=$Self->{Database};host=$Self->{DatabaseHost};";

    # ---------------------------------------------------- #
    # fs root directory
    # ---------------------------------------------------- #
    $Self->{Home} = 'C:/PROGRA~1/OTRS/OTRS';

    # ---------------------------------------------------- #
    # insert your own config settings "here"               #
    # config settings taken from Kernel/Config/Defaults.pm #
    # ---------------------------------------------------- #
    # $Self->{SessionUseCookie} = 0;
    # $Self->{CheckMXRecord} = 0;

    # ---------------------------------------------------- #

    # ---------------------------------------------------- #
    # data inserted by installer                           #
    # ---------------------------------------------------- #

    $Self->{LogModule}          = 'Kernel::System::Log::File';
    $Self->{LogModule::LogFile} = 'C:/PROGRA~1/OTRS/OTRS/var/log/otrs.log';
    # $DIBI$
    $Self->{'DefaultCharset'} = 'utf-8';


    # ---------------------------------------------------- #
    # ---------------------------------------------------- #
    #                                                      #
    #           End of your own config options!!!          #
    #                                                      #
    # ---------------------------------------------------- #
    # ---------------------------------------------------- #
}


Und bringt diesen Fehler zu Tage:

Software error:
Can't locate object method "EventHandlerTransaction" via package "Kernel::System::Ticket" at C:/PROGRA~1/OTRS/OTRS//Kernel/System/Ticket.pm line 8331.

For help, please send mail to the webmaster (webmaster@somenet.com), giving this error message and the time and date of the error.


In der Datei steht an der Stelle folgendes:

sub DESTROY {
my $Self = shift;

# execute all transaction events
$Self->EventHandlerTransaction(); <--- Zeile 8331

return 1;
}



Zudem sehe ich im Logfile folgendes:

[Mon Mar 28 11:20:05 2011][Notice][Kernel::System::PID::PIDCreate] Can't create PID PostMasterMailbox, because it's already running (myRechner@myDomain/3248)!


Hoffe mir kann da jemand helfen.
--- Grüße vom Nexter ---
jojo
Znuny guru
Posts: 15020
Joined: 26 Jan 2007, 14:50
Znuny Version: Git Master
Contact:

Re: externes DB Backend einbinden?

Post by jojo »

Hast Du den Apache neu gestartet? Bitte überprüfe auch alle ; und Klammerebenen in der Config.pm
"Production": OTRS™ 8, OTRS™ 7, STORM powered by OTRS
"Testing": ((OTRS Community Edition)) and git Master

Never change Defaults.pm! :: Blog
Professional Services:: http://www.otrs.com :: enjoy@otrs.com
Nexter
Znuny newbie
Posts: 60
Joined: 19 Jan 2011, 17:23
Znuny Version: 3.2.8

Re: externes DB Backend einbinden?

Post by Nexter »

Hallo jojo,

habe alles geprüft und Klammermässig oder wegen ; keine Fehler gefunden.

ABER: Ich hatte da nicht genug angepasst was die Datenbankfelder angeht.

Ich komplettiere den Post bei Gelegenheit mit einem Tutorial wo es mal sauber und umfangreich erklärt ist.

Was ich leider noch nicht geschafft habe ist dass die User aus der angebundenen Datenbank sich anmelden können.
Auch hier möchte ich mehrere Datenbanktabellen als Authentifizierungsmöglichkeit verwenden.
Für die Anbindung an LDAP habe ich schon ein Beispiel.
Gibt es jemand der mir sagen kann was ich zur Authentifizierung per externer DB in der Config.pm benötige?
--- Grüße vom Nexter ---
jojo
Znuny guru
Posts: 15020
Joined: 26 Jan 2007, 14:50
Znuny Version: Git Master
Contact:

Re: externes DB Backend einbinden?

Post by jojo »

schau mal in die Defaults.pm, dort ist alles drin
"Production": OTRS™ 8, OTRS™ 7, STORM powered by OTRS
"Testing": ((OTRS Community Edition)) and git Master

Never change Defaults.pm! :: Blog
Professional Services:: http://www.otrs.com :: enjoy@otrs.com
Nexter
Znuny newbie
Posts: 60
Joined: 19 Jan 2011, 17:23
Znuny Version: 3.2.8

Re: externes DB Backend einbinden?

Post by Nexter »

Hallo jojo,

danke, da habe ich sehr viel gefunden und weiss nicht ob ich das wirklich alles brauche.
Für mich stellt sich noch die Frage ob das OTRS gegen das Fremdsystem prüft oder ob der Datensatz aus dem Fremdsystem in die OTRS-DB übertragen wird und dann da authentifiziert wird?
--- Grüße vom Nexter ---
jojo
Znuny guru
Posts: 15020
Joined: 26 Jan 2007, 14:50
Znuny Version: Git Master
Contact:

Re: externes DB Backend einbinden?

Post by jojo »

es wird bei externen Kundendatenbanken oder LDAP für die Kunden immer nur gelesen, sowohl für die Daten als auch für die Authentifizierung.
"Production": OTRS™ 8, OTRS™ 7, STORM powered by OTRS
"Testing": ((OTRS Community Edition)) and git Master

Never change Defaults.pm! :: Blog
Professional Services:: http://www.otrs.com :: enjoy@otrs.com
Locked