Skip to content

Commit f55f339

Browse files
authored
Merge pull request #7 from ABCD-DEVCOM/docs-3.4
Update to version 3.4.x
2 parents 8efd98d + c3511d5 commit f55f339

File tree

1,148 files changed

+16390
-11
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,148 files changed

+16390
-11
lines changed

blog/2026-03-21-release-3-4-0.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
---
2+
slug: 2026-03-21-release-3-4-0
3+
title: "ABCD 3.4.0 Technical Release Notes"
4+
authors: [fho4abcd ]
5+
tags: [release, v3.4.0]
6+
---
7+
8+
## What's Changed
9+
* Branch for small issue by @fho4abcd in https://github.com/ABCD-DEVCOM/ABCD/pull/607
10+
* Improve client IP check by @fho4abcd in https://github.com/ABCD-DEVCOM/ABCD/pull/608
11+
* Add option to convert csv to iso-2709 by @fho4abcd in https://github.com/ABCD-DEVCOM/ABCD/pull/609
12+
* Improve IP check by @fho4abcd in https://github.com/ABCD-DEVCOM/ABCD/pull/610
13+
* Update inc_ip_check.php by @fho4abcd in https://github.com/ABCD-DEVCOM/ABCD/pull/611
14+
* Branch for small issue by @fho4abcd in https://github.com/ABCD-DEVCOM/ABCD/pull/612
15+
* Update institutional_info.php by @fho4abcd in https://github.com/ABCD-DEVCOM/ABCD/pull/613
16+
* Improvements to opac by @rogercgui in https://github.com/ABCD-DEVCOM/ABCD/pull/614
17+
18+
<!-- truncate -->
19+
20+
**Full Changelog**: https://github.com/ABCD-DEVCOM/ABCD/compare/v3.3.0...v3.4.0
21+
22+
### Option to limit access to a database based on the IP address of the requestor.
23+
- The administrator can limit access by edit of file 'the database to protect'/dr_path.def. This file may contain now new tag VALID_IP. The content of this tag is a comma separated list of internet IP addresses OR the keyword 'none'
24+
- An empty value or missing tag allows all IP addresses
25+
- Keyword 'none' limits the allowed IP addresses to link-local addresses or loopback addresses. Note that other keywords will have the same effect.
26+
- A value with valid IP addresses allows the link-local addresses + the entered IP addresses
27+
- If an IP address is not allowed then all actions for this database are blocked . Also for administrators !
28+
29+
### Utility to convert a '.csv' file to a '.iso' file.
30+
- Found in Utilities &#8658; Export/Import
31+
- Can be helpfull for importing Excels lists with new records into ABCD
32+
- Unfortunately not suitable for UTF-8
33+
- The structure of the .csv file is
34+
- The first line contains the ABCD field identifiers (e.g. 100,110,....)
35+
- Following lines define the data.
36+
- A record ends with a lineend, embedded lineends (between "") are allowed
37+
- A data cell gives the data of the corresponding field. (may be empty)
38+
- All records should have the same number of columns, however less columns as the first line is allowed
39+
- ABCD has repeating fields. This program can process the phenomonon in three ways:
40+
- Multiple columns with the same tag number are allowed.
41+
- Columns of repeated tags (as given by the fdt) are split at delimiter ; (see option -r)
42+
- Columns of repeated tags (as given by the fdt) are split at an embedded lineend
43+
44+
### Actions by database administrator
45+
Most code updates can be excuted by the Upgrade manager.
46+
47+
- The administrator may protect databases by updating dr_path.def. No actions are required if the IP protection is not used.
48+
- The administrator must copy the executable 'cnv_csv_to_iso' (from https://github.com/ABCD-DEVCOM/ABCD/tree/master/www/cgi-bin_Linux) or 'cnv_csv_to_iso.exe' (from https://github.com/ABCD-DEVCOM/ABCD/tree/master/www/cgi-bin_Windows) to his own cgi-bin.
49+

blog/tags.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,4 +98,8 @@ v3.2.1:
9898
v3.3.0:
9999
label: v3.3.0
100100
permalink: /v3.3.0
101-
description: Version 3.3.0 specific posts
101+
description: Version 3.3.0 specific posts
102+
v3.4.0:
103+
label: v3.4.0
104+
permalink: /v3.4.0
105+
description: Version 3.4.0 specific posts

docs/abcd-install/linux-installation.md

Lines changed: 36 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ cd /var/www/html
4040

4141
* Example download (always check the GitHub link for the latest version)
4242
```bash
43-
sudo wget https://github.com/ABCD-DEVCOM/ABCD/archive/refs/tags/v3.4.0.zip -O abcd.zip
43+
sudo wget [https://github.com/ABCD-DEVCOM/ABCD/archive/refs/tags/v3.4.0.zip](https://github.com/ABCD-DEVCOM/ABCD/archive/refs/tags/v3.4.0.zip) -O abcd.zip
4444
```
4545
* Extract
4646
```bash
@@ -61,17 +61,20 @@ The package contains folders for multiple operating systems. Clean up what is no
6161
* Rename `cgi-bin_Linux` to `cgi-bin`.
6262

6363
```bash
64-
sudo mv cgi-bin_Linux cgi-bin
64+
cd /var/www/html/ABCD/www
6565
```
6666

6767

68+
```bash
69+
sudo mv cgi-bin_Linux cgi-bin
70+
```
71+
6872
* Delete `cgi-bin_Windows`.
6973

7074
```bash
7175
sudo rm -rf cgi-bin_Windows
7276
```
7377

74-
7578
2. **Bases:** If this is a clean installation, rename `bases-examples` to `bases`.
7679

7780
```bash
@@ -88,20 +91,18 @@ ABCD comes with a template configuration file that must be activated.
8891
cd /var/www/html/ABCD/www/htdocs/central/
8992
```
9093

91-
9294
2. Copy the template to the actual config file:
9395

9496
```bash
9597
sudo cp config.php.template config.php
9698
```
9799

98-
99100
3. (Optional) Edit `config.php` if you need to change default paths, although the defaults usually work fine if following this guide.
100101

101102
## 5. Configure Permissions
102103

103104
For ABCD to work (save records, upload images), permissions must be exact.
104-
👉 **[See the Folder Permissions Guide](/docs/3.1/abcd-install/fixing-permissions-linux)**.
105+
👉 **[See the Folder Permissions Guide](/docs/abcd-install/fixing-permissions-linux)**.
105106

106107
## 6. Enable Executables
107108

@@ -114,4 +115,32 @@ sudo chmod +x /var/www/html/ABCD/www/cgi-bin/*
114115
## 7. Next Steps
115116

116117
* Configure the **Virtual Host** (see sidebar).
117-
* Access `http://localhost:9090/admin` (or your server IP).
118+
* Access `http://localhost:9090/admin` (or your server IP).
119+
120+
## 8. Troubleshooting
121+
122+
### OPAC Search Results Not Displaying (Redirecting to Homepage)
123+
If you can access the OPAC but performing a search redirects you back to the home page instead of displaying the results, your Apache server is likely ignoring the `.htaccess` file. The URL rewriting required by the OPAC will fail without it.
124+
125+
To fix this, especially on **Ubuntu/Debian** systems, you need to allow `.htaccess` overrides in your Apache configuration:
126+
127+
1. Open your main Apache configuration file:
128+
```bash
129+
sudo nano /etc/apache2/apache2.conf
130+
```
131+
132+
2. Scroll down to locate the `<Directory /var/www/>` block.
133+
134+
3. Change the `AllowOverride None` directive to `AllowOverride All`:
135+
```apacheconf
136+
<Directory /var/www/>
137+
Options Indexes FollowSymLinks
138+
AllowOverride All
139+
Require all granted
140+
</Directory>
141+
```
142+
143+
4. Save the file and restart Apache to apply the changes:
144+
```bash
145+
sudo systemctl restart apache2
146+
```

docusaurus.config.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,14 @@ const config = {
6666

6767
versions: {
6868
current: {
69-
label: '3.3.X', // O nome no menu dropdown
70-
path: '', // <--- O TRUQUE: Deixar vazio remove o prefixo da URL
71-
banner: 'none', // Remove o aviso de "versão não lançada"
69+
label: '3.4.X',
70+
path: '',
71+
banner: 'none',
72+
},
73+
'3.3': {
74+
label: '3.3.x',
75+
path: '3.3',
76+
banner: 'none',
7277
},
7378
'3.2': {
7479
label: '3.2.x',
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"label": "Database Architecture and Administration",
3+
"position": 6,
4+
"link": {
5+
"type": "generated-index",
6+
"description": "Everything a system administrator needs to know to keep ABCD running."
7+
}
8+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"label": "Access Management",
3+
"position": 4,
4+
"link": {
5+
"type": "doc",
6+
"id": "index"
7+
}
8+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
---
2+
title: Access Management Overview
3+
sidebar_label: Access Management
4+
---
5+
6+
# Access Management
7+
8+
Security in ABCD is controlled by a relationship between **Operators** (who logs in) and **Profiles** (what they can do). This section guides administrators through configuring secure access to the system.
9+
10+
## Core Concepts
11+
12+
### 1. Profiles (Authorization)
13+
Profiles act as templates for permissions. Instead of assigning rights to each user individually, you define a role (e.g., "Cataloger", "Loan Officer") and assign users to that role.
14+
* **[Manage Profiles](profiles.md)**: Learn how to create and edit permission sets.
15+
16+
### 2. Operators (Authentication)
17+
Operators are the actual user accounts. Each operator must be assigned to a valid profile to access the system.
18+
* **[Manage Operators](operators.md)**: Learn how to create users, reset passwords, and restrict access by library branch.
19+
20+
:::tip Security Best Practice
21+
Avoid using the generic `adm` or `abcd` accounts for daily work. Create individual accounts for every staff member to ensure actions can be traced back to a specific person in the system logs.
22+
:::
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
---
2+
title: IP Access Control (dr_path.def)
3+
sidebar_label: IP Access Control by Database
4+
sidebar_position: 4
5+
---
6+
7+
# Database IP Access Control
8+
9+
The ABCD allows you to restrict access to specific databases based on the client's IP address. This is particularly useful for databases that contain sensitive information or resources licensed exclusively for local network use.
10+
11+
**Script:** `inc_ip_check.php`
12+
**Configuration File:** `bases/[db]/dr_path.def`
13+
14+
## How It Works
15+
16+
When a user attempts to access a database (for example, through `inicio.php`), the system checks the database's directory path definition file (`dr_path.def`) for a specific security parameter called `VALID_IP`.
17+
18+
* **Public Access:** If the `VALID_IP` parameter is not present in the file, the database is public and can be accessed from any IP address.
19+
* **Restricted Access:** If the parameter is present, the system will block access unless the user's IP matches one of the allowed addresses.
20+
* **Local Network Exemption:** By design, clients connecting from local network addresses (IPv4 `169.254.x.x` or IPv6 `fe80::`) are always allowed to access the database, bypassing the external IP check.
21+
22+
## Configuration (`VALID_IP`)
23+
24+
To enable this restriction, you must edit the `dr_path.def` file located in the specific database folder.
25+
26+
**File Location:** `bases/[db]/dr_path.def`
27+
28+
You can configure the allowed IPs using a comma-separated list or block all external access completely.
29+
30+
### Examples of Usage
31+
32+
**A. Allow Specific IP Addresses:**
33+
Add the IPs separated by commas. Only these external IPs (plus the local network) will be granted access.
34+
```ini
35+
VALID_IP=192.168.1.100,203.0.113.45,203.0.113.46
36+
37+
```
38+
39+
**B. Block All External Access:**
40+
If you want the database to be strictly internal and inaccessible to any external IP, use the `none` keyword.
41+
42+
```ini
43+
VALID_IP=none
44+
45+
```
46+
47+
## Technical & Security Notes
48+
49+
* **Proxy Detection:** The script includes logic to detect the real IP address of the client even if the server is behind a proxy or load balancer. It checks headers such as `HTTP_X_FORWARDED_FOR` and `HTTP_X_REAL_IP` before falling back to `REMOTE_ADDR`.
50+
* **Enforcement:** The `inc_ip_check.php` script provides the verification logic (returning `true` or `false`). The actual blocking action (showing a warning or denying access) is enforced by the scripts that call this function, such as the search initialization scripts.
51+
52+
---
53+
54+
## How to Configure via UI
55+
56+
You do not need to edit the configuration files manually. The ABCD Central module provides a direct graphical interface to manage these permissions.
57+
58+
**Step-by-Step:**
59+
1. Log in to the **Central Module** of ABCD.
60+
2. Select the target database from the main top-left dropdown menu.
61+
3. On the main menu, click on **Update database definitions**.
62+
4. Then, select **Advanced database settings (dr_path.def)**.
63+
5. In the form that opens, ensure you are on the **Database** tab.
64+
6. Scroll down to the bottom and locate the **Valid IP adresses** field.
65+
66+
![Valid IP Addresses Field](../../media/database-architecture-and-administration/ip-access-control.png)
67+
68+
69+
## Configuration Options
70+
71+
In the **Valid IP adresses** field, you can define the access rules using the following formats:
72+
73+
* **Public Access (Default):** Leave the field **empty**. An empty value allows all client addresses to access the database.
74+
* **Specific External IPs:** Enter valid internet client IPs separated by commas (e.g., `192.168.1.100,203.0.113.45`). Only these specified external addresses will be granted access.
75+
* **Strictly Local Access:** Enter the word `None`. This blocks all external internet addresses, limiting access solely to local network addresses.
76+
77+
:::info Local Network Exemption
78+
By design, clients connecting from Link-Local network addresses (IPv4 `169.254.x.x` or IPv6 `fe80::`) are **always allowed**, regardless of the restrictions applied in this field.
79+
:::
80+
81+
## Technical Notes (Proxy & VPN)
82+
83+
* **Proxy Detection:** The underlying system script (`inc_ip_check.php`) is capable of detecting the real client IP even if your ABCD server is situated behind a proxy, load balancer, or CDN. It automatically checks HTTP headers such as `HTTP_X_FORWARDED_FOR` and `HTTP_X_REAL_IP` to validate the correct origin address.
84+
* **Rejection Behavior:** If a user accesses the system from an unauthorized IP, the script flags the access as invalid, allowing the calling application (like the OPAC or Central portal) to display a warning and block the visualization of the restricted database.
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
---
2+
title: User Management
3+
sidebar_label: User Management
4+
---
5+
6+
# User Management
7+
8+
Effective user management is essential for system security. In ABCD, access control is managed via two interacting components: **Operators** (the people) and **Profiles** (the permissions).
9+
10+
All user data is stored in the `acces` database.
11+
12+
## 1. Access Profiles
13+
14+
Before creating users, you must define what they can do. Profiles act as templates for permissions.
15+
16+
* **Path:** **Central > Administration > User administration > Create/edit profiles**
17+
18+
Instead of assigning permissions to each person individually, you create a profile (e.g., `loan_operator`) and assign it to multiple users. If you update the profile, all associated users are updated instantly.
19+
20+
:::tip Strategy
21+
Create strict profiles. It is better to have a `cataloger` profile that *only* accesses the Cataloging module than to give everyone the `adm` (Administrator) profile.
22+
:::
23+
24+
## 2. Managing Operators
25+
26+
Operators are the individual accounts used to log in to the system.
27+
28+
* **Path:** **Central > Administration > User administration > User administration**
29+
30+
### Creating a New Operator
31+
32+
To create a new account, click **New user** and complete the following fields:
33+
34+
#### Essential Fields
35+
* **Username**: The login ID. Case sensitive (e.g., `maria`). **Avoid spaces or special characters.**
36+
* **Full name**: The real name of the staff member (e.g., `Maria Silva`).
37+
* **Profile**: Select the authorization level defined in the previous step.
38+
* **Password**: Define the initial password.
39+
* **Confirm password**: Retype to validate.
40+
41+
#### Advanced Configuration
42+
* **Library Code**: Critical for multi-branch libraries. Restricts the operator to managing copies owned by a specific branch (e.g., `MAIN`, `MED`).
43+
* **Cataloger Code**: A short code (e.g., `MS`) recorded in the database logs (typically field 900) to audit who created or modified a record.
44+
* **Expiration Date**: YYYYMMDD format. The account effectively locks after this date. Useful for temporary staff or students.
45+
46+
### Maintenance Tasks
47+
48+
* **Reset Password**: If a user forgets their password, edit their record here. You cannot see the old password (it is encrypted), but you can overwrite it with a new one.
49+
* **Deactivate User**: To remove access without losing the history of records created by that user, set an **Expiration Date** in the past (do not delete the record unless necessary).
50+
51+
:::danger Security Best Practice
52+
Never share the generic `abcd` or `adm` accounts. Every staff member must have their own named account to ensure accountability in the system logs.
53+
:::
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
title: Profiles and Permissions
3+
sidebar_label: Profiles & Permissions
4+
sidebar_position: 3
5+
---
6+
7+
# Profiles and Permissions
8+
9+
In ABCD, permissions are not defined checkbox-by-checkbox for every user. Instead, you define **Profiles** (Roles), and assign users to these profiles.
10+
11+
## How Profiles Work
12+
A profile is essentially a list of authorized system functions. If a function is not listed in the profile, the menu option will not appear for that user.
13+
14+
Common examples of profiles included by default:
15+
* **`adm` (System Administrator):** Has access to everything, including file editing and database creation.
16+
* **`dbadmin` (Database Administrator):** Can manage database structures (FDT/FST) but cannot change system core files.
17+
* **`operator` (Cataloger):** Can search and edit records but cannot delete databases or change structures.
18+
* **`loan` (Circulation):** Can only access the Loan module.
19+
20+
## creating or Editing a Profile
21+
1. Go to **Administration > User administration**.
22+
2. Click on **Create/edit profiles**.
23+
24+
### The Profile Editor
25+
The editor shows a tree view of all available system functions.
26+
27+
1. **Select a Profile:** Choose an existing one to edit or type a new name to create one.
28+
2. **Grant Permissions:**
29+
* Browse the tree structure.
30+
* **Check** the boxes for the modules and functions this profile should access.
31+
* *Example:* For a "Student Assistant", you might only check **Cataloging > Data Entry** and uncheck everything else.
32+
3. **Save:** Click the save button to write the changes to the profile file.
33+
34+
:::tip File Location
35+
Profiles are physically stored as text files in `bases/par/profiles/`. Advanced users can edit these files directly to create highly granular restrictions.
36+
:::

0 commit comments

Comments
 (0)