== 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 , , and 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 -p where is the database user. Write the password and type the following command: > create database ; where 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 -p < tables.sql # mysql -u -p < distros.sql # mysql -u -p < admin/tables.sql Now you have created the database named 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 ''@'localhost' IDENTIFIED BY ''; > GRANT ALL ON .* TO ''@'localhost' IDENTIFIED BY '' 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: ServerName DocumentRoot /var/www/h-source Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all ErrorLog ${APACHE_LOG_DIR}/error.log Direct your browser to the following URL: http:/// 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 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/>. -->