From 29a9831f535b8d61370c0ddb8951a5c4b7c101f9 Mon Sep 17 00:00:00 2001 From: Joeri de Bruin Date: Wed, 25 Feb 2026 12:58:03 +0100 Subject: [PATCH 1/2] add log files for starting docker-compose --- etc/WebGUI.conf | 1132 ++++++++++++++++++++++++++++++++++++++++++++++ etc/log.conf | 12 + etc/spectre.conf | 56 +++ 3 files changed, 1200 insertions(+) create mode 100644 etc/WebGUI.conf create mode 100644 etc/log.conf create mode 100644 etc/spectre.conf diff --git a/etc/WebGUI.conf b/etc/WebGUI.conf new file mode 100644 index 000000000..bd83e4276 --- /dev/null +++ b/etc/WebGUI.conf @@ -0,0 +1,1132 @@ +# config-file-type: JSON 1 + +{ + +# Add a comma separated list of the names this site can use. +# The first site in the list will be used as the default +# sitename for generating offline URLs and other functions. + +"sitename" : [ + "www.example.com", + "example.com", + "localhost" + ], + +# Set to 1 if you want to use WebGUI's SSL functions, including encrypting user logins. + +"sslEnabled" : 0, + +# Rename the WebGUI Session cookie if you like. + +"cookieName" : "wgSession", + +# Explicitly set the domain that the WebGUI session cookie +# should be assigned to. Defaults to the domain that the user +# is browsing the site under. + +# "cookieDomain" : ".example.com", + +# Explicitly set the time to live for the WebGUI session cookie +# Defaults to +10Y. cookieTTL must follow the described format: +# Format should match /^\+?(\d+)([YMDhms]?)$/ +# $2 qualifies the number in $1 as representing "Y"ears, +# "M"onths, "D"ays, "h"ours, "m"inutes, or "s"econds (if the qualifier is omitted, +# the number is interpreted as representing seconds). +# +1h = 1 hour +# +2D = 2 Days +# +3M = 3 Months +# +10Y = 10 Years (default) + +# This may also be set to the word "session" to have cookies live +# for the current browser session only. + +# "cookieTTL" : "+10Y", + +# The location where the WebGUI server will be handling +# requests. This is normally just '/' or the root of the +# server, but on some installations it might be /webgui or +# /site1, /site2, etc. If this is set to anything other than +# '/' then a matching block should +# contain the WebGUI handler instead in the Apache +# VirtualHost configuration. + +"gateway" : "/", + +# The relative or fully qualified URL to the extras folder +# that comes with WebGUI. + +"extrasURL" : "/extras", + +# The filesystem path to get to the extras folder that ships +# with WebGUI. + +"extrasPath" : "/data/WebGUI/www/extras", + +# The relative for fully qualified URL to the uploads folder +# for this site where all attachments will be stored. + +"uploadsURL" : "/uploads", + +# The filesystem path to get to the uploads folder where all +# attachments for this site will be stored. This needs to be +# writable by your web server. + +"uploadsPath" : "/data/WebGUI/www/uploads", + +# Set this value to 1 if you want rich editors to use the +# WebGUI asset URLs for images rather than their real URLs +# in the uploads folder. The advantage of this is that users +# see short clean WebGUI controlled URLs. However, this is +# slower than the default. + +"richEditorsUseAssetUrls" : 1, + +# Used to generate user facing URLs. +# If you are not running your web server on the standard +# port (80) then use this setting to specify that. If you +# are running WebGUI behind a proxy, then webServerPort should +# be set to which ever port the proxy is listening to. + +#"webServerPort" : 80, + +# What kind of cache do you wish to use? Available types are +# WebGUI::Cache::FileCache and WebGUI::Cache::Database. +# We highly recommend the database cache if you are running +# sites with more than a few hundred pages, or if you're +# running in a multi-server environment. The file cache is better +# for very small sites. + +"cacheType" : "WebGUI::Cache::FileCache", + +# Tell WebGUI where to store cached files. Defaults to the +# /tmp or c:\temp folder depending upon your operating system. + +# "fileCacheRoot" : "/path/to/cache", + +# Set this to 1 to disable WebGUI's caching subsystems. This is +# mainly useful for developers. + +"disableCache" : 0, + +# The database connection string. It usually takes the form of +# DBI::;host: + +"dsn" : "DBI:mysql:www_example_com;host=db", + +# The username to authenticate to the above database. + +"dbuser" : "webgui", + +# The password to authenticate to the above database. + +"dbpass" : "123qwe", + +# You can configure up to three read-only database slaves to +# increase WebGUI's read performance. + +# "dbslave1" : { +# "dsn" : "DBI:mysql:www_example_com;host=dbslave1.example.com", +# "user" : "webgui", +# "pass" : "password" +# }, + +# "dbslave2" : { +# "dsn" : "DBI:mysql:www_example_com;host=dbslave2.example.com", +# "user" : "webgui", +# "pass" : "password" +# }, + +# "dbslave3" : { +# "dsn" : "DBI:mysql:www_example_com;host=dbslave3.example.com", +# "user" : "webgui", +# "pass" : "password" +# }, + +# You can configure a backup master database as a failover in case +# your primary database goes down. WebGUI will use this database until +# the original becomes available. However, this does nothing to change +# the settings of your database. If it was set up as a slave until the +# master went down, then some script will have to be written to convert +# it from a slave to a master. + +# "failoverdb" : { +# "dsn" : "DBI:mysql:www_example_com;host=failover.example.com;port=3306", +# "user" : "webgui", +# "password" : "password" +# }, + +# If you have a multi-master set up, you must define increment_step and increment_offset +# to prevent merge conflicts between the different masters. increment_step should be set +# to the number of masters, and offset should be unique to each master, starting at 0. +# +# So, a 2-master cluster would define: +# Master 1: +# increment_step: 2 +# increment_offset: 0 +# Master 2: +# increment_step: 2 +# increment_offset: 1 +# +# "db" : { +# "increment_step" : 1, +# "increment_offset" : 0 +# }, + + +# Set this value if you wish to override all outbound emails to a specific +# user for testing purposes. + +# "emailOverride" : "joe@example.com", + +# Set this value if you wish to bypass sending email to the mailserver alltogether. +# This will instead pipe email messages to the log, removing them from the queue normally + +# "emailToLog" : "1", + +# By adding CIDR based subnets to the following array you can limit the +# subnets by which users can turn admin mode on. + +"adminModeSubnets" : [ ], + +# List the authentication plug-ins you wish to be available on +# this site. + +"authMethods" : [ "LDAP", "WebGUI", "Twitter" ], + +# List the merchant gateways you have installed and wish to be +# available on this site. + +"paymentDrivers" : [ + "WebGUI::Shop::PayDriver::Cash", + "WebGUI::Shop::PayDriver::ITransact", + "WebGUI::Shop::PayDriver::PayPal::PayPalStd", + "WebGUI::Shop::PayDriver::PayPal::ExpressCheckout", + "WebGUI::Shop::PayDriver::CreditCard::AuthorizeNet", + "WebGUI::Shop::PayDriver::Ogone" + ], + +# List the shipping drivers you have installed and wish to be +# available for configuration on the site. + +"shippingDrivers" : [ + "WebGUI::Shop::ShipDriver::FlatRate", + "WebGUI::Shop::ShipDriver::USPS", + "WebGUI::Shop::ShipDriver::USPSInternational", + "WebGUI::Shop::ShipDriver::UPS" + ], + +# Specify the list of template parsers available in the system. + +"templateParsers" : [ + "WebGUI::Asset::Template::HTMLTemplate" + ], + +# Enable the Survey Expression Engine, which allows goto expressions in +# the config. + +"enableSurveyExpressionEngine" : 0, + +# Specify the default template parser. + +"defaultTemplateParser" : "WebGUI::Asset::Template::HTMLTemplate", + +# Specify external helper apps that will enable WebGUI's search +# engine to index content in various uploaded file formats. The +# helpers must take the path to the file as an argument and +# return either text or html content. + +"searchIndexerPlugins" : { + "txt" : "/bin/cat", + "readme" : "/bin/cat", + "html" : "/bin/cat", + "htm" : "/bin/cat" + }, + + +# define what appears in the admin console and who can view it + +"adminConsole" : { + "loginHistory" : { + "icon" : "loginHistory.gif", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",op=viewLoginHistory);", + "title" : "^International(426,WebGUI);", + "groupSetting" : "groupIdAdminLoginHistory" + }, + "clipboard" : { + "icon" : "clipboard.gif", + "group" : "12", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",func=manageClipboard);", + "title" : "^International(948,WebGUI);" + }, + "statistics" : { + "icon" : "statistics.gif", + "uiLevel" : 1, + "url" : "^PageUrl(\"\",op=viewStatistics);", + "title" : "^International(437,WebGUI);", + "groupSetting" : "groupIdAdminStatistics" + }, + "users" : { + "icon" : "users.gif", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",op=listUsers);", + "title" : "^International(149,WebGUI);", + "groupSetting" : "groupIdAdminUser" + }, + "activeSessions" : { + "icon" : "activeSessions.gif", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",op=viewActiveSessions);", + "title" : "^International(425,WebGUI);", + "groupSetting" : "groupIdAdminActiveSessions" + }, + "inbox" : { + "icon" : "inbox.gif", + "group" : "2", + "uiLevel" : 1, + "url" : "^PageUrl(\"\",op=viewInbox);", + "title" : "^International(159,WebGUI);" + }, + "versions" : { + "icon" : "versionTags.gif", + "uiLevel" : 7, + "url" : "^PageUrl(\"\",op=manageVersions);", + "title" : "^International(version tags,VersionTag);", + "groupSetting" : "groupIdAdminVersionTag" + }, + "help" : { + "icon" : "help.gif", + "uiLevel" : 1, + "url" : "^PageUrl(\"\",op=viewHelpIndex);", + "title" : "^International(help,WebGUI);", + "groupSetting" : "groupIdAdminHelp" + }, + "groups" : { + "icon" : "groups.gif", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",op=listGroups);", + "title" : "^International(89,WebGUI);", + "groupSetting" : "groupIdAdminGroup" + }, + "userProfiling" : { + "icon" : "userProfiling.gif", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",op=editProfileSettings);", + "title" : "^International(user profiling,WebGUIProfile);", + "groupSetting" : "groupIdAdminProfileSettings" + }, + "ldapconnections" : { + "icon" : "ldap.gif", + "uiLevel" : 9, + "url" : "^PageUrl(\"\",op=listLDAPLinks);", + "title" : "^International(ldapconnections,AuthLDAP);", + "groupSetting" : "groupIdAdminLDAPLink" + }, + "contentProfiling" : { + "icon" : "contentProfiling.gif", + "group" : "4", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",func=manageMetaData);", + "title" : "^International(content profiling,Asset);" + }, + "databases" : { + "icon" : "databases.gif", + "uiLevel" : 9, + "url" : "^PageUrl(\"\",op=listDatabaseLinks);", + "title" : "^International(databases,WebGUI);", + "groupSetting" : "groupIdAdminDatabaseLink" + }, + "adSpace" : { + "icon" : "advertising.gif", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",op=manageAdSpaces);", + "title" : "^International(topicName,AdSpace);", + "groupSetting" : "groupIdAdminAdSpace" + }, + "settings" : { + "icon" : "settings.gif", + "group" : "3", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",op=editSettings);", + "title" : "^International(settings,WebGUI);" + }, + "workflow" : { + "icon" : "workflow.gif", + "uiLevel" : 7, + "url" : "^PageUrl(\"\",op=manageWorkflows);", + "title" : "^International(topicName,Workflow);", + "groupSetting" : "groupIdAdminWorkflow" + }, + "assets" : { + "icon" : "assets.gif", + "group" : "12", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",op=assetManager);", + "title" : "^International(assets,Asset);" + }, + "assetHistory" : { + "icon" : "assetHistory.gif", + "groupSetting" : "groupIdAdminHistory", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",op=assetHistory);", + "title" : "^International(assetHistory,Asset);" + }, + "graphics" : { + "icon" : "graphics.gif", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",op=listGraphicsOptions);", + "title" : "^International(manage graphics,Graphics);", + "groupSetting" : "groupIdAdminGraphics" + }, + "passiveAnalytics" : { + "icon" : "passiveAnalytics.png", + "uiLevel" : 1, + "url" : "^PageUrl(\"\",op=passiveAnalytics;func=editRuleflow);", + "title" : "^International(Passive Analytics,PassiveAnalytics);", + "groupSetting" : "3" + }, + "shop" : { + "icon" : "shop.gif", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",shop=admin);", + "title" : "^International(shop,Shop);", + "groupSetting" : "groupIdAdminCommerce" + }, + "trash" : { + "icon" : "trash.gif", + "group" : "12", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",func=manageTrash);", + "title" : "^International(trash,WebGUI);" + }, + "cron" : { + "icon" : "cron.gif", + "uiLevel" : 9, + "url" : "^PageUrl(\"\",op=manageCron);", + "title" : "^International(topicName,Workflow_Cron);", + "groupSetting" : "groupIdAdminCron" + }, + "spectre" : { + "icon" : "spectre.gif", + "uiLevel" : 9, + "url" : "^PageUrl(\"\",op=spectreStatus);", + "title" : "^International(spectre,Spectre);", + "groupSetting" : "groupIdAdminSpectre" + }, + "adminConsoleOff" : { + "icon" : "adminConsoleOff.gif", + "uiLevel" : 1, + "group" : "12", + "url" : "^PageUrl(\"\",op=switchOffAdmin);", + "title" : "^International(12,WebGUI);" + }, + "addons" : { + "icon" : "addons.png", + "uiLevel" : 1, + "group" : "12", + "url" : "http://www.webgui.org/addons", + "title" : "^International(Addons title,WebGUI);" + }, + "contentFilters" : { + "icon" : "contentFilters.gif", + "uiLevel" : 3, + "url" : "^PageUrl(\"\",op=listReplacements);", + "title" : "^International(content filters,WebGUI);", + "groupSetting" : "groupIdAdminReplacements" + }, + "cache" : { + "icon" : "cache.gif", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",op=manageCache);", + "title" : "^International(manage cache,WebGUI);", + "groupSetting" : "groupIdAdminCache" + }, + "filePump" : { + "icon" : "filePump.png", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",op=filePump);", + "title" : "^International(File Pump,FilePump);", + "groupSetting" : "groupIdAdminFilePump" + } +}, + +# Enter the maximum number of assets that should be allowed to +# be created on this site. Keep in mind that a base install of +# WebGUI has around 300 assets. Enter zero (0) if you want to +# allow an unlimited number. + +"maximumAssets" : 0, + +# Specify the list of categories to display in the "New Content" +# menu. The category names should match those used in the "assets" +# hash later in this config. Each category can have three properties: +# +# title - The human readable name of the category. +# uiLevel - The minimum UI level the user must have to see the category. +# group - A group id the user must be in to see the category. + +"assetCategories" : { + "basic" : { + "uiLevel" : 1, + "title" : "^International(basic,Macro_AdminBar);" + }, + "shop" : { + "uiLevel" : 5, + "title" : "^International(shop,Shop);" + }, + "utilities" : { + "uiLevel" : 9, + "title" : "^International(utilities,Macro_AdminBar);" + }, + "community" : { + "uiLevel" : 5, + "title" : "^International(community,Macro_AdminBar);" + }, + "intranet" : { + "uiLevel" : 5, + "title" : "^International(intranet,Macro_AdminBar);" + } +}, + +# Specify the list of assets you want to appear in your +# "New Content" menu categories. See "assetCategories" for details +# about categories. Each listing has a key of class name, and then +# has several properties, which are: +# +# category - The category the asset should appear in. Can also be an array of categories. +# isContainer - Whether or not the assets main purpose to display the data from other assets. +# addGroup - The group the user must be in to add this asset. +# uiLevel - The minimum UI level the user must have to add the asset. +# fields - Edit the properties of the asset. +# tabs - Edit the tabs on which the fields are displayed when editing the asset. +# +# The "fields" property above may override any property of any field in this +# asset class. Examples are label, tab, uiLevel. You must know what you're +# doing with this, because you could break an asset if you set something wrong +# with these properties. Here's an example of wha the fields poperty might look like: +# +# "fields" : { +# "title" : { +# "label" : "Name", +# "tab" : "basic" +# }, +# "synopsis" : { +# "label" : "Abstract", +# "uiLevel" : 3 +# } +# } +# +# The "tabs" property allows you to to create new, hide, and update existing tabs in +# the asset. Each tab has two properties: +# +# uiLevel - The minimum UI level the user must have to view the tab. +# label - The human readable label for the tab. +# +# Here's an example of what a tabls section might look like: +# +# "tabs" : { +# "basic" : { +# "label" : "Basic", +# "uiLevel" : 1 +# }, +# "meta" : { +# "uiLevel" : 99999 +# }, +# "security" : { +# "label" : "Protection" +# } +# } + +"assets" : { + "WebGUI::Asset::Wobject::Shelf" : { + "category" : "shop" + }, + "WebGUI::Asset::Wobject::Layout" : { + "isContainer" : 1, + "category" : "basic" + }, + "WebGUI::Asset::Wobject::Gallery" : { + "category" : "community" + }, + "WebGUI::Asset::Wobject::DataTable" : { + "category" : "basic" + }, + "WebGUI::Asset::Wobject::DataForm" : { + "category" : "basic" + }, + "WebGUI::Asset::Sku::Ad" : { + "category" : "shop" + }, + "WebGUI::Asset::Sku::Donation" : { + "category" : "shop" + }, + "WebGUI::Asset::Sku::ThingyRecord" : { + "category" : "shop" + }, + "WebGUI::Asset::Wobject::UserList" : { + "category" : "intranet" + }, + "WebGUI::Asset::Wobject::EventManagementSystem" : { + "category" : "shop" + }, + "WebGUI::Asset::Sku::Subscription" : { + "category" : "shop" + }, + "WebGUI::Asset::Wobject::WikiMaster" : { + "isContainer" : 1, + "category" : "community" + }, + "WebGUI::Asset::Wobject::StoryArchive" : { + "isContainer" : 1, + "category" : "community" + }, + "WebGUI::Asset::Wobject::StoryTopic" : { + "category" : "community" + }, + "WebGUI::Asset::Wobject::Carousel" : { + "category" : "utilities" + }, + "WebGUI::Asset::Wobject::StockData" : { + "category" : "intranet" + }, + "WebGUI::Asset::FilePile" : { + "category" : "basic" + }, + "WebGUI::Asset::Wobject::Collaboration" : { + "category" : "community" + }, + "WebGUI::Asset::Wobject::Survey" : { + "category" : "community" + }, + "WebGUI::Asset::File::ZipArchive" : { + "category" : "utilities" + }, + "WebGUI::Asset::RichEdit" : { + "category" : "utilities" + }, + "WebGUI::Asset::Wobject::SyndicatedContent" : { + "category" : "utilities" + }, + "WebGUI::Asset::Wobject::HttpProxy" : { + "category" : "utilities" + }, + "WebGUI::Asset::Wobject::MultiSearch" : { + "category" : "intranet" + }, + "WebGUI::Asset::File::Image" : { + "category" : "utilities" + }, + "WebGUI::Asset::Sku::Product" : { + "category" : "shop" + }, + "WebGUI::Asset::Wobject::WeatherData" : { + "category" : "intranet" + }, + "WebGUI::Asset::Redirect" : { + "category" : "utilities" + }, + "WebGUI::Asset::Wobject::Article" : { + "category" : "basic" + }, + "WebGUI::Asset::Wobject::AssetReport" : { + "category" : "utilities" + }, + "WebGUI::Asset::Wobject::Search" : { + "category" : "basic" + }, + "WebGUI::Asset::Wobject::MessageBoard" : { + "isContainer" : 1, + "category" : "community" + }, + "WebGUI::Asset::Wobject::SQLReport" : { + "category" : "utilities" + }, + "WebGUI::Asset::Wobject::TimeTracking" : { + "category" : "intranet" + }, + "WebGUI::Asset::Wobject::Calendar" : { + "category" : "basic" + }, + "WebGUI::Asset::Wobject::Poll" : { + "category" : "basic" + }, + "WebGUI::Asset::Wobject::ProjectManager" : { + "category" : "intranet" + }, + "WebGUI::Asset::Wobject::Folder" : { + "isContainer" : 1, + "category" : "basic" + }, + "WebGUI::Asset::Wobject::Navigation" : { + "category" : "utilities" + }, + "WebGUI::Asset::Wobject::Matrix" : { + "category" : "community" + }, + "WebGUI::Asset::Sku::FlatDiscount" : { + "category" : "shop" + }, + "WebGUI::Asset::Wobject::Thingy" : { + "category" : "intranet" + }, + "WebGUI::Asset::File" : { + "category" : "utilities" + }, + "WebGUI::Asset::Wobject::Collaboration::Newsletter" : { + "category" : "community" + }, + "WebGUI::Asset::Snippet" : { + "category" : "basic" + }, + "WebGUI::Asset::Wobject::InOutBoard" : { + "category" : "intranet" + }, + "WebGUI::Asset::Wobject::Dashboard" : { + "isContainer" : 1, + "category" : "intranet" + }, + "WebGUI::Asset::Wobject::DataForm" : { + "category" : "basic" + }, + "WebGUI::Asset::Template" : { + "category" : "utilities" + }, + "WebGUI::Asset::Wobject::Map" : { + "category" : "basic" + }, + "WebGUI::Asset::Wobject::AssetReport" : { + "category" : "utilities" + }, +}, + +# +# Specify the list of account pluggins available on your site. +# Account pluggins are returned on the site in the order they are list in the config file +# Each pluggin has serveral properties +# +# identifier - This string will act as the identifying agent for this account pluggin. It is passed along +# the url and cannot contain spaces. +# title - The title of the module which is displayed on the website. +# className - The class which drives this module + +# +# IMPORTANT NOTE - PLEASE READ: +# +# DO NOT DELETE THE WebGUI::Account::User pluggin from this list. This module +# is Deprecated on release and is mandatory for every site. You may move it's position +# but if you remove it you will break WebGUI's Authentication System. This module will +# be replaced in WebGUI 8 once the APIs can be broken and the Account portion of Auth +# can be moved into the Account system +# +# A profile module is required as well. You may replace the default profile +# module with a custom version, but many systems in WebGUI rely on being +# able to display a user's profile. +# + +"account" : [ + { + "identifier" : "profile", + "title" : "^International(title,Account_Profile);", + "className" : "WebGUI::Account::Profile" + }, + { + "identifier" : "inbox", + "title" : "^International(title,Account_Inbox);", + "className" : "WebGUI::Account::Inbox" + }, + { + "identifier" : "friends", + "title" : "^International(title,Account_Friends);", + "className" : "WebGUI::Account::Friends" + }, + { + "identifier" : "contributions", + "className" : "WebGUI::Account::Contributions", + "title" : "^International(title,Account_Contributions);" + }, + { + "identifier" : "shop", + "title" : "^International(title,Account_Shop);", + "className" : "WebGUI::Account::Shop" + }, + { + "identifier" : "user", + "title" : "^International(title,Account_User);", + "className" : "WebGUI::Account::User" + }, + { + "identifier" : "friendManager", + "title" : "^International(title,Account_FriendManager);", + "className" : "WebGUI::Account::FriendManager" + }, +], + +# Specify which of the modules in the above list is used +# to display the user's profile. This is a mandatory configuration + +"profileModuleIdentifier" : "profile", + +# Optionally add a "Save and Commit" button to assets so that you +# don't have to hit "Commit My Changes" seperately. + +"enableSaveAndCommit" : 0, + +# Optionally override the default UI Level of any asset. This +# determines whether the current user has the appropriate UI Level +# to add assets of that type. + +# Configure the UI Levels of the asset toolbar links. + +"assetToolbarUiLevel" : { + "copy" : 1, + "cut" : 1, + "delete" : 1, + "edit" : 1, + "view" : 1, + "demote" : 3, + "promote" : 3, + "lock" : 5, + "manage" : 5, + "revisions" : 5, + "shortcut" : 5, + "changeUrl" : 9, + "editBranch" : 9, + "export" : 9 + }, + +# If exportPath is defined, an "Export" toolbar icon will appear +# which allows you to export assets to static HTML. This folder +# needs to be writable by your web server. + +# "exportPath" : "/path/to/export", + +# Enable streaming Image and File assets thru mod_perl process instead of +# simple redirect. WARNING has impact on performance. + +"enableStreamingUploads" : "0", + +# Specify the list of macros you wish to be processed on each page. + +"macros" : { + "@" : "At_username", + "#" : "Hash_userId", + "/" : "Slash_gatewayUrl", + "a" : "a_account", + "AdminBar" : "AdminBar", + "AdminText" : "AdminText", + "AdminToggle" : "AdminToggle", + "AdSpace" : "AdSpace", + "AOIHits" : "AOIHits", + "AOIRank" : "AOIRank", + "AssetProperty" : "AssetProperty", + "AssetProxy" : "AssetProxy", + "BackToSite" : "BackToSite", + "CanEditText" : "CanEditText", + "CartItemCount" : "CartItemCount", + "ConvertUTCToTZ" : "ConvertUTCToTZ", + "c" : "c_companyName", + "D" : "D_date", + "DeactivateAccount": "DeactivateAccount", + "EditableToggle" : "EditableToggle", + "e" : "e_companyEmail", + "Extras" : "Extras", + "FetchMimeType" : "FetchMimeType", + "FilePump" : "FilePump", + "FileUrl" : "FileUrl", + "FormField" : "FormField", + "GroupAdd" : "GroupAdd", + "GroupDelete" : "GroupDelete", + "GroupText" : "GroupText", + "H" : "H_homeLink", + "If" : "If", + "International" : "International", + "LastModified" : "LastModified", + "LastModifiedBy" : "LastModifiedBy", + "L" : "L_loginBox", + "LoginToggle" : "LoginToggle", + "MiniCart" : "MiniCart", + "Page" : "Page", + "PageTitle" : "PageTitle", + "PageUrl" : "PageUrl", + "PickLanguage" : "PickLanguage", + "RandomAssetProxy" : "RandomAssetProxy", + "RandomThread" : "RandomThread", + "RenderThingData" : "RenderThingData", + "RootTitle" : "RootTitle", + "r" : "r_printable", + "Spacer" : "Spacer", + "SpectreCheck" : "SpectreCheck", + "TwitterLogin" : "TwitterLogin", + "Thumbnail" : "Thumbnail", + "User" : "User", + "UsersOnline" : "UsersOnline", + "u" : "u_companyUrl", + "ViewCart" : "ViewCart", + "StorageUrl" : "StorageUrl" + }, + +#Specify any LDAP aliases for synchronizing user profiles to LDAP +"ldapAlias" : { + "firstName" : "givenName", + "lastName" : "sn", + "email" : "mail", + "companyName" : "o" + }, + +# Define the subnets that WebGUI should expect Spectre communication +# to come from. All other subnets will be ignored. The subnet +# should be listed in CIDR notation. + +"spectreSubnets" : [ "127.0.0.1/32" ], + +# Define the IP Address that should be used by WebGUI to connect +# to Spectre. Depending upon your cluster configuration, this may +# or may not be the same as the information in spectreSubnets. + +"spectreIp" : "127.0.0.1", + +# Define the port number WebGUI should use to connect to Spectre + +"spectrePort" : 32133, + +# Define the workflow activities that are available in the editing +# process and what object types they support. + +"workflowActivities" : { + "None" : [ + "WebGUI::Workflow::Activity::ArchiveOldStories", + "WebGUI::Workflow::Activity::ArchiveOldThreads", + "WebGUI::Workflow::Activity::CalendarUpdateFeeds", + "WebGUI::Workflow::Activity::CleanCookieJars", + "WebGUI::Workflow::Activity::CleanDatabaseCache", + "WebGUI::Workflow::Activity::CleanFileCache", + "WebGUI::Workflow::Activity::CleanLoginHistory", + "WebGUI::Workflow::Activity::CleanTempStorage", + "WebGUI::Workflow::Activity::CreateCronJob", + "WebGUI::Workflow::Activity::DecayKarma", + "WebGUI::Workflow::Activity::DeleteExpiredSessions", + "WebGUI::Workflow::Activity::ExpireEmsCartItems", + "WebGUI::Workflow::Activity::ExpireGroupings", + "WebGUI::Workflow::Activity::ExpireSubscriptionCodes", + "WebGUI::Workflow::Activity::GetSyndicatedContent", + "WebGUI::Workflow::Activity::NotifyAdminsWithOpenVersionTags", + "WebGUI::Workflow::Activity::PurgeOldAssetRevisions", + "WebGUI::Workflow::Activity::PurgeOldTrash", + "WebGUI::Workflow::Activity::RemoveOldCarts", + "WebGUI::Workflow::Activity::SendQueuedMailMessages", + "WebGUI::Workflow::Activity::SummarizePassiveProfileLog", + "WebGUI::Workflow::Activity::SyncProfilesToLdap", + "WebGUI::Workflow::Activity::TrashClipboard", + "WebGUI::Workflow::Activity::TrashExpiredEvents", + "WebGUI::Workflow::Activity::SummarizePassiveAnalytics", + "WebGUI::Workflow::Activity::BucketPassiveAnalytics", + "WebGUI::Workflow::Activity::ExpirePurchasedThingyRecords" + ], + "WebGUI::Asset::Wobject::Thingy" : [ + "WebGUI::Workflow::Activity::NotifyAboutThing" + ], + "WebGUI::Asset" : [ + "WebGUI::Workflow::Activity::UpdateAssetSubscribers" + ], + "WebGUI::User" : [ + "WebGUI::Workflow::Activity::CreateCronJob", + "WebGUI::Workflow::Activity::NotifyAboutUser", + "WebGUI::Workflow::Activity::ActivateUser", + "WebGUI::Workflow::Activity::DeactivateUser", + "WebGUI::Workflow::Activity::WaitForUserConfirmation", + "WebGUI::Workflow::Activity::DeleteUser" + ], + "WebGUI::VersionTag" : [ + "WebGUI::Workflow::Activity::CommitVersionTag", + "WebGUI::Workflow::Activity::CreateCronJob", + "WebGUI::Workflow::Activity::ExportVersionTagToHtml", + "WebGUI::Workflow::Activity::NotifyAboutVersionTag", + "WebGUI::Workflow::Activity::RequestApprovalForVersionTag", + "WebGUI::Workflow::Activity::RequestApprovalForVersionTag::ByCommitterGroup", + "WebGUI::Workflow::Activity::RequestApprovalForVersionTag::ByLineage", + "WebGUI::Workflow::Activity::RollbackVersionTag", + "WebGUI::Workflow::Activity::TrashVersionTag", + "WebGUI::Workflow::Activity::UnlockVersionTag", + "WebGUI::Workflow::Activity::WaitUntil" + ] + }, + +# Enter the graphing plugins that you want to enable for your site. + +"graphingPlugins" : [ + "WebGUI::Image::Graph::Pie", + "WebGUI::Image::Graph::XYGraph::Bar", + "WebGUI::Image::Graph::XYGraph::Line" + ], + +# Here you can define the dictionaries that are available through the tinyMCE spellchecker. You should set +# id to the name the dictionary is known by ASpell (eg. en or en_US or nl), use the name parameter to set +# the name the dictionary is displayed with in tinyMCE. To set the default dictionary please set the 'default' +# parameter. + +#"availableDictionaries" : [ +# { +# "id" : "en_US", +# "name" : "English", +# "default" : "1" +# }, +# { +# "id" : "nl", +# "name" : "Dutch" +# } +#], + +# Optional script to run upon successful login. The script can contain macros +# ex: /data/WebGUI/sbin/doLogin.pl --configFile=dev.localhost.localdomain.conf --loginPage=^PageUrl(); + +"runOnLogin" : "", + +# Optional script to run upon successful logout. The script can contain macros +# Example: /data/WebGUI/sbin/doLogout.pl --configFile=dev.localhost.localdomain.conf --logoutPage=^PageUrl(); + +"runOnLogout" : "", + +# URL handlers are used to associate functionality with a URL via a regular expression. + +"urlHandlers" : [ + { "^/extras" : "WebGUI::URL::PassThru" }, +# { "^/icons" : "WebGUI::URL::PassThru" }, +# { "^/documentation/pdf" : "WebGUI::URL::PassThru" }, +# { "^/my-custom-application$" : "WebGUI::URL::PassThru" }, +# { "^/server-status$" : "WebGUI::URL::PassThru" }, +# { "^/perl-status$" : "WebGUI::URL::PassThru" }, + { "^/uploads/dictionaries" : "WebGUI::URL::Unauthorized" }, + { "^/uploads" : "WebGUI::URL::Uploads" }, + { "^/\\*give-credit-where-credit-is-due\\*$" : "WebGUI::URL::Credits" }, + { "^/abcdefghijklmnopqrstuvwxyz$" : "WebGUI::URL::Snoop" }, + { ".*" : "WebGUI::URL::Content" } + ], + +# Content handlers are used to produce content from the content URL handler. +# Note, these handlers are processed in the order listed. Do not change +# unless you know what you're doing. + +"contentHandlers" : [ + "WebGUI::Content::Prefetch", + "WebGUI::Content::Maintenance", + "WebGUI::Content::Referral", + "WebGUI::Content::AssetManager", + "WebGUI::Content::AssetDiscovery", + "WebGUI::Content::PassiveAnalytics", + "WebGUI::Content::SetLanguage", + "WebGUI::Content::AjaxI18N", + "WebGUI::Content::Account", + "WebGUI::Content::AssetHistory", + "WebGUI::Content::FilePump", + "WebGUI::Content::Wizard", + "WebGUI::Content::Operation", + "WebGUI::Content::Setup", + "WebGUI::Content::Shop", + "WebGUI::Content::SiteIndex", + "WebGUI::Content::Asset", + "WebGUI::Content::NotFound" + ], + + +# extensions that the export system should pass through as-is instead of using +# index.html +"exportBinaryExtensions" : [ + "html", + "htm", + "txt", + "pdf", + "jpg", + "css", + "gif", + "png", + "doc", + "xls", + "xml", + "rss", + "bmp", + "mp3", + "js", + "fla", + "flv", + "swf", + "pl", + "php", + "php3", + "php4", + "php5", + "ppt", + "docx", + "zip", + "tar", + "rar", + "gz", + "bz2" +], + +# Drivers for the pluggable tax system +"taxDrivers" : [ + "WebGUI::Shop::TaxDriver::Generic", + "WebGUI::Shop::TaxDriver::EU" +], + +# Content Delivery Network - for use with WebGUI::Storage +# required for CDN: enabled, url, queuePath, syncProgram, deleteProgram +# optional for CDN: sslAlt, sslUrl, extrasCdn, extrasSsl, extrasExclude +#"cdn" : { "enabled" : 0, +# "url" : "http://content.example.com", +# "sslAlt" : 0, +# "sslUrl" : "https://ssl.example.com", +# "queuePath" : "/data/cdnqueue", +# "syncProgram" : "/usr/bin/rsync -av --chmod=u+rwx -- '%s' user@content.example.com:/path", +# "deleteProgram" : "/usr/bin/ssh user@content.example.com 'rm -Rf -- %s'", +# "extrasCdn" : "http://content.example.com/extras", +# "extrasSsl" : "https://content.example.com/extras", +# "extrasExclude": ["tinymce", "^blah$"] +# }, + +#A list of UserAgents of recognized mobile platforms. If useMobileStyle is set in the +#Admin settings, then the mobile style will be used for these browsers. + "mobileUserAgents" : [ + "AvantGo", + "DoCoMo", + "Vodafone", + "EudoraWeb", + "Minimo", + "UP\\.Browser", + "PLink", + "Plucker", + "NetFront", + "^WM5 PIE$", + "Xiino", + "iPhone", + "Opera Mobi", + "BlackBerry", + "Opera Mini", + "HP iPAQ", + "IEMobile", + "Profile/MIDP", + "Smartphone", + "Symbian ?OS", + "J2ME/MIDP", + "PalmSource", + "PalmOS", + "Windows CE", + "Opera Mini" + ], + +# For the siteIndex content plugin. Whether or not the auto-generated siteIndex should +# show hidden pages + "siteIndex" : { + "showHiddenPages" : 0 + }, + +# An array of SPAM words. Used in the Post and WikiPage to block spam by sending the asset directly +# to the trash. + "spamStopWords" : [ + ], + +# A flag to enable a very simple SSO mechanism using sessionIds. + "enableSimpleSSO" : 0 + +} diff --git a/etc/log.conf b/etc/log.conf new file mode 100644 index 000000000..ab64ca799 --- /dev/null +++ b/etc/log.conf @@ -0,0 +1,12 @@ +# WebGUI uses the log4perl logging system. This default configuration file +# will work out of the box and will log only ERROR and FATAL level messages to +# /var/log/webgui.log. This is only the beginning of what this logging +# system is capable of. To unleash the full power read the config file manual +# http://log4perl.sourceforge.net/releases/Log-Log4perl/docs/html/Log/Log4perl/Config.html + +log4perl.logger = ERROR, mainlog +log4perl.appender.mainlog = Log::Log4perl::Appender::File +log4perl.appender.mainlog.filename = /var/log/webgui.log +log4perl.appender.mainlog.layout = PatternLayout +log4perl.appender.mainlog.layout.ConversionPattern = %d - %p - %c - %M[%L] - %m%n + diff --git a/etc/spectre.conf b/etc/spectre.conf new file mode 100644 index 000000000..75abd0b4d --- /dev/null +++ b/etc/spectre.conf @@ -0,0 +1,56 @@ +# config-file-format: JSON 1 + +{ + +# Define the IP address that Spectre should run on. If WebGUI and +# Spectre are on the same machine, you should leave this as is. + +"ip" : "127.0.0.1", + +# Define a port for Spectre to run on between 1024 and 65000. + +"port" : 32133, + +# How many Spectre workers should be allowed to be running at +# one time. Keep in mind that workers use some of the resources +# of your web site. If you're running only one server, you probably +# shouldn't have more than 5 workers. If you're running load +# balanced servers, you can probably have as many as 5 per server, +# but depending upon the amount of editing and workflows you have +# on your site, you may not need that many. + +"maxWorkers" : 3, + +# How many seconds should Spectre wait between spawning jobs. This +# can help avoid creating a denial of service attack on overworked +# or underpowered servers. + +"timeBetweenRunningWorkflows" : 1, + +# How long should Spectre delay processing a workflow instance when +# it gets suspended. It can get suspended if it's waiting for +# external input, or if it errors for any reason. + +"suspensionDelay" : 60, + +# What port should we connect to WebGUI on? If you've configured +# WebGUI yourself, then this should probably be 80. If you're using +# the WebGUI Runtime Environment, 8081 might be a better choice to go +# directly at the mod_perl server. + +"webguiPort" : 80, + +# Should we ignore the proxy environment variables? If your server +# uses a proxy to connect to the internet and you are running +# Spectre on the same server as WebGUI, you should set this to 1. +# It should be safe to set this to 1 any time spectre and WebGUI +# are running on the same server. + +"ignoreEnvProxy" : 0, + +# The location of the file that keeps track of the master spectre processId. + +"pidFile" : "/var/run/spectre.pid" + +} + From b83c2bffaaa58ec6e4bab4eafe368f0e25aede27 Mon Sep 17 00:00:00 2001 From: Joeri de Bruin Date: Wed, 25 Feb 2026 12:58:12 +0100 Subject: [PATCH 2/2] add log files for starting docker-compose --- etc/.gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/etc/.gitignore b/etc/.gitignore index 4ba60981f..e69de29bb 100644 --- a/etc/.gitignore +++ b/etc/.gitignore @@ -1 +0,0 @@ -/*.conf