== Introduction ==
h-source is web software that can be used to build a community of people that want to share their hardware information. It is based on the EasyGiant PHP framework (www.easygiant.org) and can be considered an EasyGiant application.
== Requirements ==
TODO: It is not clear what are the exact php modules required for the site to run.
Help with formalizing the module dependencies would be appreciated.
On a debian-like distro, typically it is sufficient to have the following
extra modules installed on top of a standard php 7 installation:
* Web server with PHP and URL rewrite (such as Apache with mod-rewrite)
* Any version of MariaDB, or MySQL 5 or newer
* php (currently v7)
* php-fpm (also needs to be enabled)
* php-cli
* php-gd
* php-mbstring
* php-mysql
* php-xml
On a Debian-like system, the following command should be sufficient:
# apt install apache2 mysql-server php libapache2-mod-php php-mysql php-xml
# a2enmod rewrite
You may need to turn off the STRICT_TRANS_TABLES sql mode to avoid query errors.
In a sql shell, do
> SET GLOBAL sql_mode = REPLACE(@@GLOBAL.SQL_MODE, 'STRICT_TRANS_TABLES', '');
* FIXME: apparently this is not needed in some cases. Find the root cause.
== Installation and configuration ==
Extract the tarball or clone the VCS to your filesystem:
git clone https://git.savannah.gnu.org/git/h-source.git
You have to create the MySQL database used by h-source. The tables of the database that have to be created are written inside the file tables.sql and distros.sql. A way to carry out this operation is the following:
Open a terminal and type:
# cp Config/Config.php{.sample,}
# cp admin/Config/Config.php{.sample,}
And if necessary:
# cp .htaccess{.sample,}
Now edit those configuration files, at least, defining the DB password 'PWD' under "/*db parameters*/" section in Config/Config.php.
The following constants are mandatory:
* DB // name of the database (the database we will create now)
* USER // database user
* PWD // database password
* HOST // hostname of the mysql server (usually localhost)
* DOMAIN_NAME // domain name of the website (use 'localhost'
or create a virtual host in your web server)
Note that the <USERNAME>, <PASSWORD>, and <DB> in the commands below, must correspond to the "/*db parameters*/" in Config/Config.php and admin/Config/Config.php.
Back at the terminal, type:
# mysql -u <USERNAME> -p
where <USERNAME> is the database user. Write the password and type the following command:
> create database <DB>;
where <DB> is the database name you want to use. Close Mysql by typing the following command:
> exit
Now you have to move inside the folder that contains the tables.sql file and type the following commands:
# mysql -u <USERNAME> -p<PASSWORD> <DB> < tables.sql
# mysql -u <USERNAME> -p<PASSWORD> <DB> < distros.sql
# mysql -u <USERNAME> -p<PASSWORD> <DB> < admin/tables.sql
Now you have created the database named <DB> and populated it with the default accepted/recognized distros. This will also create the default web user having the following credentials:
username: admin
password: admin
Make sure you change the password of this user!
* FIXME: apparently, this is not created sometimes.
> CREATE USER '<USERNAME>'@'localhost' IDENTIFIED BY '<PASSWORD>';
> GRANT ALL ON <DB>.* TO '<USERNAME>'@'localhost' IDENTIFIED BY '<PASSWORD>' WITH GRANT OPTION;
> FLUSH PRIVILEGES;
Create an apache virtual host conf pointing to the h-source directory (say it's /var/www/h-source), enable it and reload the apache web server. Here's a simple example of the Apache virtual host conf:
<VirtualHost *:80>
ServerName <DOMAIN_NAME>
DocumentRoot /var/www/h-source
<Directory /var/www/h-source>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
</VirtualHost>
Direct your browser to the following URL:
http://<DOMAIN_NAME>/
where DOMAIN_NAME is the domain name you have previously set (eg: localhost). You should see the home page of the h-source software.
You will be able to login to the website using the 'admin' user and change the website preferences and the admin password.
== Account issues ==
If you want that the system can send e-mails you have to specify the name of the SMTP server that has to be used. Copy the file Application/Include/params.php.sample to Application/Include/params.php and set the following static attributes of the Website class:
$mailServer = ""; // set the mail server (if $useSMTP = true)
$generalMail = ""; // set the username of your mail account (always needed)
$mailPassword = ""; // set the password of your mail account (if $useSMTP = true)
$fromEmail = ""; // this is the "from address e-mail" used inside the mails
sent by h-source (example: confirmation requesta e-mail,
change password e-mail, ...)
$useSMTP = true; // if you want to use a SMTP account. It can be true or false.
Set $useSMTP to false if you want that the software rely on
the mail() PHP function.
You can also set these constants:
$generalName = ""; // the string that you want to use inside the <title> tag of your website
$projectName = ""; // the name of your project
To configure for the admin app, do the same for admin/Application/Include/params.php.sample.
== Configure the HTML template (right column, top notices, top menu, etc.) ==
Modify the file config.xml inside the ROOT folder of your h-source installation.
If you want to change the position of the config.xml file change the following static attribute of the Website class inside the Application/Include/params.php file:
static public $xmlConfigFileFolder = ROOT; // the constant ROOT contains the
path to the root folder of your
h-source installaton
== Change the homepage ==
Modify the PHP files inside the folder Application/Views/Home
== Change the hardware ==
Modify the PHP file Application/Include/hardware.php
== Change the allowed distributions ==
Modify the PHP file Application/Include/distributions.php
== Change the allowed languages ==
Modify the PHP file Application/Include/languages.php
== How to fill the vendors table ==
After the installation, you have to fill the MySQL table containing the USB/PCI vendors IDs. Note this corresponds to vendors for the USB/PCI interface, which are different from say the notebook vendors which are stored in Application/Include/hardware.php.
To carry out this task, use the scripts in the scripts sub-directory.
Change into the scripts/vendorid/ directory. Copy the file connect.php.sample to connect.php and set the following variables with the same values as your h-node instance:
$host = '<DOMAIN_NAME>';
$user = '<USERNAME>';
$password = '<PASSWORD>';
$dbName = '<DB>';
You will find two files containing the list of vendors: pci.ids and usb.ids. If you want more up-to-date versions of those files then delete them and write the following commands (or download those files from the URLs indicated below):
wget pciids.sourceforge.net/v2.2/pci.ids -O pci.ids
wget http://www.linux-usb.org/usb.ids -O usb.ids
Be sure you have installed php-cli, then write the following command:
php insert_vendors.php
It will fill the 'vendors' MySql table.
== Learn the EasyGiant PHP framework ==
Since h-source is an application of the EasyGiant PHP framework you can use the EasyGiant features in order to modify the h-source source code. Visit www.easygiant.org (archived at http://web.archive.org/web/20161027164429/http://www.easygiant.org/).
You may find a guide to EasyGiant at http://www.easygiant.org/media/guide/20150326.pdf (archived at http://web.archive.org/web/20161027162658/http://www.easygiant.org/media/guide/20150326.pdf).
<!-- NOTE: this file is legal mediawiki syntax -->
<!-- LICENSE
h-source, a web software to build a community of people that want to share their hardware information.
Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt)
Copyright (C) 2022 bill-auger <h-source-users@nongnu.org>
This file is part of h-source
h-source is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
h-source is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with h-source. If not, see <http://www.gnu.org/licenses/>.
-->