USE information_schema; SELECT o.TABLE_SCHEMA, o.UPDATE_TIME FROM `TABLES` o LEFT JOIN `TABLES` b ON o.TABLE_SCHEMA = b.TABLE_SCHEMA AND o.UPDATE_TIME < b.UPDATE_TIME WHERE b.UPDATE_TIME IS NULL AND o.UPDATE_TIME IS NOT NULL GROUP BY o.TABLE_SCHEMA;
ISPConfig 3 API, List all domain_id
Attention: Before using this script, you MUST KNOW how to use ISPConfig API. If you are first time to learning ISPConfig API, Please go to see First time test ISPConfig API learning how to config, how to run it and how to debug with https.
File name: sites_web_domain_id_get_all.php
<?php require 'soap_config.php'; $context = stream_context_create([ 'ssl' => [ // set some SSL/TLS specific options 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ] ]); $client = new SoapClient(null, array('location' => $soap_location, 'uri' => $soap_uri, 'trace' => 1, 'exceptions' => 1, 'stream_context' => $context)); try { if($session_id = $client->login($username, $password)) { echo 'Logged successfull. Session ID:'.$session_id.'<br />'; } $domain_record = $client->sites_web_domain_get($session_id, []); $domain_ids = array_column($domain_record, 'domain_id'); print_r($domain_ids); if($client->logout($session_id)) { echo 'Logged out.<br />'; } } catch (SoapFault $e) { echo $client->__getLastResponse(); die('SOAP Error: '.$e->getMessage()); } ?>
First time test ISPConfig API
- After Install ISPConfig , the application would not saved any API Example or Document. So, we need to find out the example scripts at the source file and copy them to /usr/local/ispconfig.
cd /tmp wget -O ispconfig.tar.gz https://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz tar xfz ispconfig.tar.gz cd ispconfig3_install/ cp -R remoting_client/ /usr/local/ispconfig/ cd /usr/local/ispconfig/remoting_client
- All API Document and example file was copied to /usr/local/ispconfig/remoting_client
- ISPConfig add Remote Users
ISPConfig Web UI > system > Remote User > Add new user
Entry username & password, And click what do you want function. In first test, please click all Functions. Please remember username & password for modify API config file .
save
- Modify API config file
cd /usr/local/ispconfig/remoting_client/examples/ nano soap_config.php
<?php $username = 'admin'; $password = 'admin1234'; /* $soap_location = 'http://localhost:8080/ispconfig3_3.0.5/interface/web/remote/index.php'; $soap_uri = 'http://localhost:8080/ispconfig3_3.0.5/interface/web/remote/'; */ $soap_location = 'https://192.168.1.100:8080/remote/index.php'; $soap_uri = 'https://192.168.1.100:8080/remote/'; ?>
Change to
<?php $username = 'username'; $password = 'password'; /* $soap_location = 'http://localhost:8080/ispconfig3_3.0.5/interface/web/remote/index.php'; $soap_uri = 'http://localhost:8080/ispconfig3_3.0.5/interface/web/remote/'; */ $soap_location = 'https://localhost:8080/remote/index.php'; $soap_uri = 'https://localhost:8080/remote/'; ?>
- Test First API
php system_config_get.php
If every was ok, you will see the follow message.
Logged successfull. Session ID:qd0758c7265f2498285bef4e2f7ba4a3a25f8c7e3<br />Array ( [company_name] => Innonext [custom_login_text] => [custom_login_link] => [dashboard_atom_url_admin] => https://www.ispconfig.org/atom [dashboard_atom_url_reseller] => https://www.ispconfig.org/atom [dashboard_atom_url_client] => https://www.ispconfig.org/atom [tab_change_discard] => n [tab_change_warning] => n [use_loadindicator] => y [use_combobox] => y [show_support_messages] => y [maintenance_mode] => n [maintenance_mode_exclude_ips] => [admin_dashlets_left] => [admin_dashlets_right] => [reseller_dashlets_left] => [reseller_dashlets_right] => [client_dashlets_left] => [client_dashlets_right] => [customer_no_template] => C[CUSTOMER_NO] [customer_no_start] => 1 [customer_no_counter] => 5 [session_timeout] => 0 [session_allow_endless] => n [min_password_length] => 8 [min_password_strength] => 3 )
- Normally, It was Done! BUG
But some API have some BUG and not work. This is because the normally working API was disabled ‘ssl verify peer’ when using https connect. So, we need add ‘disabled ssl verify peer’ in not work API.
Test sites_web_domain_get.php, you will get a error message ‘SOAP Error: Could not connect to host‘
php sites_web_domain_get.php
SOAP Error: Could not connect to host[root@system]#
Fix method, Edit sites_web_domain_get.php
<?php require 'soap_config.php'; {add something here} $client = new SoapClient(null, array('location' => $soap_location, 'uri' => $soap_uri, 'trace' => 1, 'exceptions' => 1{add something here})); try { if($session_id = $client->login($username, $password)) { echo 'Logged successfull. Session ID:'.$session_id.'<br />'; } //* Set the function parameters. $subdomain_id = 10; $subdomain_record = $client->sites_web_subdomain_get($session_id, $subdomain_id); print_r($subdomain_record); if($client->logout($session_id)) { echo 'Logged out.<br />'; } } catch (SoapFault $e) { echo $client->__getLastResponse(); die('SOAP Error: '.$e->getMessage()); } ?>
Change to
<?php require 'soap_config.php'; $context = stream_context_create([ 'ssl' => [ // set some SSL/TLS specific options 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ] ]); $client = new SoapClient(null, array('location' => $soap_location, 'uri' => $soap_uri, 'trace' => 1, 'exceptions' => 1, 'stream_context' => $context)); try { if($session_id = $client->login($username, $password)) { echo 'Logged successfull. Session ID:'.$session_id.'<br />'; } //* Set the function parameters. $subdomain_id = 10; $subdomain_record = $client->sites_web_subdomain_get($session_id, $subdomain_id); print_r($subdomain_record); if($client->logout($session_id)) { echo 'Logged out.<br />'; } } catch (SoapFault $e) { echo $client->__getLastResponse(); die('SOAP Error: '.$e->getMessage()); } ?>
Test sites_web_domain_get.php again
php sites_web_domain_get.php
Logged successfull. Session ID:u3712304db1b527b09cbe8582f141f0614331d551<br />Logged out.<br />[root@system]#
- Everything Done.
- You may not research other API in /usr/local/ispconfig/remoting_client/examples.
- About API Document, you may direct file download to you desktop computer.
https://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
Extract ISPConfig-3-stable.tar.gz in your PC.
You may find a file in extracted folder and run it, Ispconfig3_install\remoting_client\API-docs\index.html

Backup script example, Auto Make directory, Prepare date file name, dump mySQL, Auto rename old backup files with index code, rsync data
#!/bin/bash basedir=/var/backup/store sqldir=$basedir/sql PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH export LANG=C for dirs in $basedir do [ ! -d "$dirs" ] && mkdir -p $dirs done for dirs in $sqldir do [ ! -d "$dirs" ] && mkdir -p $dirs done param1=$(date +%Y-%m-%d-%H-%M-%S) # Database Backup sqlusername=root sqlpassword=Z2PG82SMtQzD mysqldump=/usr/bin/mysqldump bwlimit=--bwlimit=100K #bwlimit= sqldbname=dbispconfig sqlsavetarget=$sqldir/$sqldbname.sql rm -rf $sqlsavetarget.7 mv $sqlsavetarget.6 $sqlsavetarget.7 mv $sqlsavetarget.5 $sqlsavetarget.6 mv $sqlsavetarget.4 $sqlsavetarget.5 mv $sqlsavetarget.3 $sqlsavetarget.4 mv $sqlsavetarget.2 $sqlsavetarget.3 mv $sqlsavetarget.1 $sqlsavetarget.2 mv $sqlsavetarget $sqlsavetarget.1 $mysqldump -u $sqlusername -p$sqlpassword --skip-lock-tables -R $sqldbname > $sqlsavetarget /usr/bin/rsync -ah $bwlimit --delete /etc $basedir /usr/bin/rsync -ah $bwlimit --delete /usr/local/ispconfig $basedir
Prevent duplicate shell script executions
Method #1, pidof
I have a /var/backup/systemBackup.sh for system backup.
edit /var/backup/runsystemBackup.sh
#!/bin/bash if pidof -x "systemBackup.sh" >/dev/null; then echo "Process already running" exit 0 fi /var/backup/systemBackup.sh > /dev/null &
try run /var/backup/runsystemBackup.sh
Method #2, lock file
I have a /var/backup/systemBackup.sh for system backup.
edit /var/backup/runsystemBackup.sh
#!/bin/sh lockdir=/tmp BACKUP=/var/backup/systemBackup.sh LOGGER=/usr/bin/logger if [ ! -f /$lockdir/systemBackup.sh ]; then touch $lockdir/systemBackup.sh $BACKUP rm $lockdir/systemBackup.sh else echo "systemBackup.sh already running" $LOGGER -d -t SYSTEM_Backup "systemBackup.sh already running" fi
try run /var/backup/runsystemBackup.sh
Method #3, flock with cron job
# m h dom mon dow user command 5 0 * * * flock -w 0 /tmp/sqlbackup.sh.lock /var/backup/systemBackup.sh
Fixed WordPress Images not showing up with HTTPS

Step 1. Appearance > Theme Editor
Step 2. Find header.php at right side {Theme Files}

In my case, I can’t find header.php. So, I click Writers Blogily.

I found Theme Header (header.php) and click it.
Add a meta in html head
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

click update file button on bottom

Complete! this problem was fixed
Fixed MySQL replication slave got Last_SQL_Errno: 1062
If you don’t want REDO the complete procedure, a good fix would be to use
STOP SLAVE;
SET GLOBAL sql_slave_skip_counter=1;
START SLAVE;
If there are too many such errors, a good idea would be to automate it using a bash script.
Reference : Ut xD(2017), https://serverfault.com/questions/336888/what-causes-the-mysql-error-1062-duplicate-entry-when-starting-slave, Last visit at Jan 2022
Zentyal MySQL Password
source : https://oitibs.com/how-to-access-zentyal-mysql/
Open the file located at /var/lib/zentyal/conf/zentyal-mysql.passwd
and take note of the password.
Removing epoxy packaging from chips
source : https://www.youtube.com/watch?v=mT1FStxAVz4&list=WL&index=1
- Using machine remove the top packet
- In Room temperature put a drop or two of fuming nitric acid into the milled packet and waited for a while
- Put the IC on the hot plate, like ceramic container. Around 100 degree C for speed up reaction.
- keep put a drop acid on the ICs top when acid evaporation.
- Use Acetone clean the Chips.
Manuel SQL backup for ISPConfig by command line
Version 3.1.x
The following command will start cron job backup in advance.
command: cron_debug.php
php /usr/local/ispconfig/server/cron_debug.php --cronjob=500-backup.inc.php
Version 3.2.x
command: backup-now.php
Usage:
php backup-now.php --id=<4> [--type=]
Options:
--id id of the website to backup.
--type backup type: all, web or mysql. Default is all.
php /usr/local/ispconfig/server/backup-now.php --id=1 --type=mysql