Git Product home page Git Product logo

otobo's Introduction

What is OTOBO?

OTOBO is an extremely flexible, web-based open-source ticketing tool, used to streamline communication in service organisations such as IT Helpdesks, Customer Service, Call Centers etc.

It provides classical ticketing functionality, a knowledgebase/FAQs with internal and external interface, helps to automate processes and can be extended by an ITSM component with a CMDB to keep track of IT components – or buildings, office plants, cars etc.

OTOBO is a fork based on ((OTRS)) Community Edition, started in 2019 to go back to the roots and offer a 100 % free tool, rooted in a strong community, and backed up by professional business services.

Find a list of features here.

License

OTOBO is distributed under the GNU General Public License - see the accompanying LICENSE file for more details.

Documentation

OTOBO documentation can be found at https://doc.otobo.org/

The source code of OTOBO and its extension modules is available on GitHub.

Professional Services for OTOBO

OTOBO is a mighty and highly flexible tool. Pretty much everything can be individualized and adapted to your needs. And more often than not there is more than one way to achieve a goal.

No reason to feel overwhelmed, though. We are happy to help adapt the system optimally to your needs, make sure you take full advantage of it, and assist in securing your operations. There’s also a fully managed version of OTOBO if you do not want to take care of that yourself.

We are Rother OSS GmbH, source code owner of OTOBO. Founder Stefan Rother was first employee of OTRS GmbH back in 2004, and created Rother OSS when he left there in 2011. We have been working with the ticketing tool ever since, and know what we are doing.

Read more about

Or directly get in touch.

Software requirements

The software and hardware requirements can be found in our documentation.

How to contribute

We take the open-source idea very seriously and explicitly invite the community to engage with us.

If you have a request or think you have found a bug, please visit our forums or open an issue on GitHub.

To make our lives a bit easier, please

  • Search the forums before issuing new topics
  • Try to be as precise and complete as possible when reporting bugs – it helps a lot if we know how to reproduce them
  • Use the labels provided on GitHub to categorize your request
  • Start a pull request, if you have implemented a feature or fix yourself.

THANK YOU!

otobo's People

Contributors

aychel avatar bschmalhofer avatar chzauleck avatar daxim avatar eyazi avatar fredmac48 avatar gritrother-otobo avatar io-architect avatar itandmore avatar jacasavilcap avatar jepf avatar joserribeiro26 avatar kess-net avatar khalilhamada-otobo avatar kozosakurai avatar mgruner avatar niccord avatar otobo-bot avatar paulyang0825 avatar reneeb avatar rubjo avatar stefanabel-otobo avatar stefanhaerter avatar stefanrother-otobo avatar svenoe avatar tastaturix avatar tipue-dev avatar weblate avatar wollmers avatar wornet-aer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

otobo's Issues

Broken links to bugs.otobo.org

In the code there are comments like http://bugs.otobo.org/show_bug.cgi?id=2230. These links are broken as bugs.otobo.org is empty. IMHO these links could be reverted back to e.g. http://bugs.otrs.org/show_bug.cgi?id=2230 .

Figure out host of DB-user 'otobo' when running in Docker

In the Docker-world it is not obvious what the use as the user.host of the DB-User 'otobo'.
A static IP-address is problematic as IP-addresses often change.
A hostname is problematic because then we would have to unset skip-name-resolve.
Currently '%' is used. But is this secure?

MySQL 8: don't set query_cache_size

The query cache has been removed in MySQL 8. Especially the variable query_cache_size which is mentioned in the installation instructions

Bug in bin/otobo.CheckModules.pl

If I use the script Otobo.CheckModules.pl -list under ubuntu 18.04, I get the following output:

apt-get install -y DateTime::TimeZone libdatetime-perl libdbi-perl libnet-dns-perl libtemplate-perl libtemplate-perl libxml-libxml-perl libyaml-libyaml-perl

  • Fix "DateTime::TimeZone" it´s not possible here.

  • And if anyone changes it, please adjust -help setting. The description includes all commands with a - (example: -list), but --list also works. I would just change the description to be standard compatible.

  • My suggestion is, that the command otobo.CheckModules.pl opens the help page.

  • A categorization of the modules during output would be helpful to see what I really need.

Thanks!

Stefan

Environment variable in Kernel::System::AuthSession modules

It would be nice if the AuthSession modules could be reused from non-CGI applications easily. This is already possible, but only if the environment variables REMOTE_AGENT and HTTP_USER_AGENT are set. It would be nicer it these variables were retrieved from the ParamObject.

See bin/mojo/dbviewer.pl for an example where the workaround is needed.

Variable name referring to OTRS

In ./Kernel/System/Console/Command/Dev/Tools/ImportFakeEmails.pm and in ./bin/otobo.SetPermissions.pl there are still variables containing 'Otrs'.

Check the usage of $ENV{SCRIPT_NAME}

$ENV{SCRIPT_NAME} is used in several places in the code base. My impression is that these usages are not standard compliant, as SCRIPT_NAME can depend on the webserver setup. In any case it would be nice if $ENV{SCRIPT_NAME} would be inspected in a single central location, e.g. in Kernel::System::Web::Request

Add support for features in otobo.CheckModules.pl

otobo.CheckModules.pl --cpanfile generates a simple cpanfile with the required modules. The module list is kept in the skript itself. It would be nice to support features in the cpanfile so that users could install modules based on their feature preferences. E.g. cpanm --installdeps --with-feature postgresql --with-feature PSGI .

Create PSGI App bin/psgi-bin/otobo.psgi

The application bin/cgi-bin/app.psgi is working when Plack is installed. It can be started with plackup bin/cgi-bin/app.psgi.

However there are some issued remaining:

  • some static files are not served

  • Database connection caching, replacement for Apache::DBI

  • Logfiles are not set up

  • TODO: check the apache config for missing settings

  • Using CGI::Emulate::PSGI is kind of ugly

MySQL 8: user creation

In MySQL 8, the default authentication plugin has changed from 'mysql_native_password' to 'caching_sha2_password'. The goal is to stay with 'mysql_native_password'.
Also creating users with GRANT is no longer supported.

TODO:

  • Check the install docs and the code for database user creation
  • Switch to 'CREATE USER ... IDENTIFIED WITH mysql_native_password
  • Test with MySQL 8
  • Test with MySQL 5.7
  • Test with MySQL 5.6
  • Maybe test with older MySQL version if they are still relevant.

Read-Only flag in CustomerCompany Map

I had a strange setup with additional fields in CustomerCompany. In the config these were marked as readonly. Consequently the additional fields could not be changed. Because of a direkt update in the table customer_company different values were shown in the GUI as were in the table. When updating in the GUI the values from the GUI were inserted in the table.

My guess is that the readonly fields were still POST input fields. And all it takes to make these fields writable is to use a Browser extension that make ro input fields writable. IMHO this is a security bug.

Moo.pm and namespace::clean are not bundled, but are claimed to be bundled

Kernel::System::Environment claims that the package Moo is a bundled module . However there is no bundled Kernel/cpan-lib/Moo.pm. The same applies to namespace::cleanand possibly other modules.

There are two possible fixes:

  1. Add Moo and namespace::clean to Kernel/cpan-lib
  2. Remove Moo and namespace::clean from Kernel::System::Environmentand add them to bin/otobo.CheckModules.pl as needed modules

I'm not sure what the preferred approach would be. One hunch is that adding the bundled modules to otobo.CheckModules is sensible in any case.

COPYING vs. LICENSE

The files COPYING and LICENSE in the OTOBO root are identical. I'm sure whether both have a purpose or one of the files is redundant.

Reverse proxy support for otobo.psgi

otobo.psgi currently does not provide support for HTTPS. The recommendation for supporting HTTPS access is to run otobo.psgi behind a proxy providing HTTPS. Therefore otobo.psgi should support a reverse proxy setup. Maybe also provide an optional nginx container that is configured with HTTPS support.

Support for Mysql 8 on Ubuntu 19.10

Ubuntu 19.10 ships with MySQL 8.0.20. MySQL 8.0 is the successor of MySQL 5.7. Looks like they dropped the 5 in order to confuse people. There are some changes in MySQL 8.0 that are relevant for OTOBO. See also https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html.

The individual topics will be handled in dependent issues:

  • #4: Creating users with GRANT no longer works. The default authentication plugin has changed from 'mysql_native_password' to 'caching_sha2_password'
  • #6: "groups" is now a reserved word and can no longer be used as an unquoted table name
  • #9: The query cache has been removed. Especially the variable query_cache_size which is mentioned in the installation instructions
  • The default character_set_server has changed from latin1 to utf8mb4. No action required here as the encoding utf8 is explicitly stated in the CREATE TABLE statements
  • The character set utf8mb3, which is aliased by utf8, is now deprecated, no action required for this issue. Switching to utf8mb4 is not in the scope of this issue

Distinguish between MariaDB and MySQL in Kernel::Modules::Installer

When creating the otobo database user it is advisable to explicitly set the authentication plugin mysql_native_password . This avoid surprises when the default authentication plugin changes. E.g. when MySQL 5.7 was upgraded to MySQL 8.

For MySQL 5.7 and MySQL 8 the following statement seems to work.

CREATE USER test1@localhost IDENTIFIED WITH mysql_native_password BY 'xxxx';

However this fails for MariaDB 10.5.3, There the statement:

CREATE USER test1@localhost IDENTIFIED WITH mysql_native_password AS PASSWORD( 'xxxx' );

works.
TODO: Look at $dbh->{'mysql_serverinfo'};and use the appropriat SQL statement.

See also #37.

Installation: check return code of the executed SQL statements

In Installer.pm there are SQL-statements first collected and then executed. However the return status of the execution is never inspecter. Thus the intstaller GUI might report everything as successful, even when some tables were not created.

TODO: inspect the return code and stop the installationj when there are errors

Run OTOBO with PSGI in Docker

Create a Dockerfile that builds an image with OTOBO running with PSGI under Starman using MySQL as backend.
For now it is still expected that 'otobo/installation.pl' will be run by the user.

Support for MySQL running on a non-default port

I had an use case where I wanted to run MySQL in Docker. On the host there was another MySQL running on port 3306. In order to avoid the conflicting port I mapped the port 3306 in the container to the port 5003 on the host. However in installer.pl I could not specify the port.

IMHO it would be a nice feature it the MySQL port could be specified. If the GUI should be kept as simple as possible, then it would be nice if the port could be specified in Config.pm.

Support for MariaDB 10.5

ManiaDB 10.5 does not spport the CREATE USER ... IDENTIFIED WITH .. BY ... syntax. An alternative might be to use IDENTIFIED WITH .. AS PASSWORD(...) . This should also work on MySQL 5.7 and MySQL 8.

otobo.psgi: avoid database reconnect for every request

In the mod_perl version for OTOBO the Perl module Apache::DBI. This module enables connection caching. However in otobo.psgi there is no connection caching and there seems to be a reconnect for each request.

In might be worthwhile to use DBIx::Connector in the OTOBO_RUNS_UNDER_PSGI case. Apache::DBImight do the job as well, but that is IMHO confusing.

Setting ViewableTicketsPage no longer used

The sysconfig setting ViewableTicketsPage seems to be no longer used. It looks like the number of displayed tickets is now taken from the user preferences.
I also removed manually the now obsolete translation. There is propably a tool for that, but I'm clueless about it.

SecureMode and SelectBox

In Framework.xml there is a setting for SecureMode.

   <Setting Name="SecureMode" Required="1" Valid="1" ConfigLevel="200">
        <Description Translatable="1">Disables the web installer (http://yourhost.example.com/otobo/installer.pl), to prevent the system from being hijacked. If not enabled, the system can be reinstalled and the current basic configuration will be used to pre-populate the questions within the installer script. If enabled, it also disables the GenericAgent, PackageManager and SQL Box.</Description>
        <Navigation>Core</Navigation>
        <Value>
            <Item ValueType="Checkbox">0</Item>
        </Value>
    </Setting>

There it is stated that the SQL Box is disabled when SecureMode is enabled. However I have been able to run a SELECT in the SQL Box after installer.pl has run. I think that the documentation in Framework.xml is outdated.

Decide on handling of Kernel::System::Time

We incorporated some packages which rely on Kernel::System::Time (or its former duplicate Kernel::System::ZnunyTime). In OTRS Kernel::System::Time is handled as legacy. In principle we are not bound to deprecate it, too, but with Kernel::System::DateTime being present, too, the current situation messy.

In my opinion, at some point we should probably add the missing functionality of Kernel::System::Time to Kernel::System::DateTime, and get rid of the former.

Database connect attempted in Installer Intro

When running installer.pl for a new installation the database host is not yet known. Yet the intro page of the Installer calls $Output .= $LayoutObject->Footer(); Within that call there is an attempt to get the list of states from the otobo database. However the Database connect fails when the MySQL database does not run on the local host.

Use a process watcher instead of cron when running under Docker

The current bin/docker/entrypoint.sh runs under der user 'otobo' which can't, and shouldn't, start the Cron Daemon. This means that currently no cronjobs are executed in the docker container.

Therefore I propose to forego cronjobs and watch the Daemon.pl with a tool like supervisor. The downside it that no othere cronjobs can be supported. However my understanding is that all periodic actions should be handled by the Daemon anyways.

Docker: Use /proc/self/fd/1 as default output file for logging

In the current docker setup there is no rsyslog running on otobo_web_1. The logging method should therefore be logging to a file. The Docker philosophy is to log to STDOUT. Thus the default logfile should be /proc/self/fd/1 (STDOUT) or /proc/self/fd/2 (STDERR). But before changing the defaults, this approach needs to be tested first.

Shebang line of the perl scripts

The scripts assume that the system Perl in in /usr/bin/perl. However the official Perl docker image has perl in /usr/local/bin. Or some users might want to use perlbrew.

I suggest to change the Shebang to `#!/usr/bin/env perl'

Setting EnhancedSearchFields is no longer used

When looking at the code for CustomerCompanySearchDetail() I found that CustomerCompany::EnhancedSearchFields are mentioned in the POD. This seems to be a leftover from a previous implementation, as the code indicates that the search fields are taken from the CustomerCompanyMaps.

Same applies to CustomerUser.

DBViewer: support redirects outside of index.pl

Currently /otobo/dbviewer redirects to /otobo/index.pl when authentication fails. It would be nice to distinguish the two cases:

  1. Access denied because the user is not logged in
  2. Access denied because the user is logged in but not a admin.

For case 1. it would be nice to have a redirect to a login page that redirects back to the wanted page. Currently this is not possible as the GET parameter RequestedURL is expected to be a query string only. Thus '../dbviewer' can't be used.

OTOBO Daemon should handle changes in Kernel/Config.pm

My Understanding is that SecureMode = 0 indicates that OTOBO is being configured. In this situation running the Daemon might be problematic. How about adding a check for SecureMode that exits the Daemon when SecureMode = 0?
Alternatively Monitor Kernel/Config.pm and Reload it when it is changed. This could be done with Module::Refresh, or Module::Reload, or with Linux::Inotify2.

EventHandler for Kernel::System::User

Kernel::System::CustomerUser handles registered event, but Kernel::System::User doesn't provide support for events. It might be useful to add that capability.

MySQL 8: 'groups' is no longer allowed as unquoted table name

'groups' is a reserved word in MySQL 8. The solution is to rename the table 'groups' to 'groups_table'.

TODO:

  • adapt the table creation in the table creation step during installation
  • rename 'groups' to 'groups_table' in the OTOBO Perl modules
  • rename 'groups' to 'groups_table' in the OTOBO test scripts
  • migrate 'groups' to 'groups_table' during the migration to OTOBO 10

Regenerate or remove scripts/database/*.sql

The purpose of the SQL scripts in the dir scripts/database is not obvious. For the installation, the .xml files in scripts/database are used. I did not see where the .sql files are used. I also did not see a generation script, so they might have been updated manually.

  • remove the .sql files in case they are not needed

  • find are write a generation script in case that they are needed

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.