HOWTO - GOAUTODIAL 4 AND VICIDIAL SAME BOX - SOLVED
Posted: Wed Apr 15, 2020 10:42 pm
It is assumed you either already have goautodial 4 installed as either new or existing and not a vicidial only install.
Backup everything or run a new install to be safe.
First follow the steps here https://goautodial.net/d/4-goautodial-v ... l-on-linux if needed or doing a new install. If you have an existing install check some of the settings shown there. The instructions will work if you dont do anything on that link, but it is a baseline that works.
Next for the impatient: (Detailed explanation at the bottom)
sudo cd /usr/src/goautodial/astguiclient/
sudo perl install.pl --web-only
Answer n when asked if you did a default install.
If you dont have your real certs installed (not self signed) do the following: - You can skip this step if you dont have certs. It not needed for this to work but some people may find it helpful
sudo cp /etc/letsencrypt/live/--YOUR DOMAIN NAME--/certs.pem /etc/pki/tls/certs/localhost.crt
sudo cp /etc/letsencrypt/live/--YOUR DOMAIN NAME--/privkey.pem /etc/pki/tls/private/localhost.key
(NOTE: These are just your cert files and can come wherever you have them. They may not be in /etc/letsencrypt... but they must replace the localhost.crt and localhost.key)
sudo mv /etc/httpd/conf.d/fpm.conf /etc/httpd/conf.d/fpm.conf.orig
sudo mysql asterisk -A
update vicidial_users set load_leads='1', campaign_detail='1',ast_admin_access='1',modify_users='1',alter_agent_interface_options='1',modify_same_user_level='1' where user = 'goadmin';
sudo cp /var/www/html/agc/bp.pl /var/www/html/agc/bp.pl.old
sudo vi /var/www/html/agc/bp.pl
Replace the contents with:
#!/usr/bin/perl
if (length($ARGV[0])>1)
{
$i=0;
while ($#ARGV >= $i)
{
$args = "$args $ARGV[$i]";
$i++;
}
if ($args =~ /--pass=/i)
{
@data_in = split(/--pass=/,$args);
$pass = $data_in[1];
$pass =~ s/ .*//gi;
$php_script = '
require("dbconnect_mysqli.php");
require("functions.php");
$stmt = "SELECT pass_key,pass_cost FROM system_settings;";
$rslt=mysql_to_mysqli($stmt, $link);
$qm_conf_ct = mysqli_num_rows($rslt);
if ($qm_conf_ct > 0)
{
$row=mysqli_fetch_row($rslt);
$SSpass_key = $row[0];
$SSpass_cost = $row[1];
$pass_options = ["cost" => $SSpass_cost,"salt" => base64_encode($SSpass_key)];
$pass_hash = password_hash($argv[1], PASSWORD_BCRYPT, $pass_options);
$pass_hash = substr($pass_hash, 29, 31);
echo "PHASH: $pass_hash\n";
}
';
open my $sm, "|php -r '$php_script' -- $pass" or die "could not run inline php script";
close $sm;
}
}
Reboot your system
https://--YOUR DOMAIN NAME--/vicidial/welcome.php
You should be able to login with goadmin and its password. If your password contains special characters like \ $ " | ; vicidial will strip them from the password, so if you have trouble logging into vicidial change the password in goautodial and then try to log into vicidial again.
NOTES:
You can use the currenlty created goadmin user as an admin after it has been updated. That is what the SQL does. The existing goadmin is in the ADMIN group but cannot access many admin items. Be mindful of how your changes could affect goautodial since you have new powers now.
It "SEEMS" like goautodial is just installing a normal vicidial install according to goautodials install script. The install script specifically installs vicidial with the --no-web option.
I think the reason for this is 2 fold.
1. goautodial is running with php-fpm which is bad for vicidial Basic Authentication. The PHP_AUTH_USER, PHP_AUTH_PW would not be set so you will get the login prompts but your user/pass are never passed to vicidial.
I could only get it to run without https using a vhost and adding RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
the best solution (at least for me) was to disable php-fpm. Thats is why php-fpm.conf was renamed so it wont run. Maybe vicidial 9.02, 9.1 or 10 can use authentication like the Agent Login screen and not PHP Basic Authentication. Then php-fpm can be used again.
2. goautodial is using php for the password hash and not perl. Any passwords saved to vicidial from goautodial would not be able to be used by the vicidial web app.
That is what the new bp.pl is doing by using the same password algorithm. There are some detailed explanations to disable password hashing but then all the password would need to be decoded and updated in vicidial_users. But I believe most people are not programming or SQL experts so the new bp.pl may not be elegant, but its a simple solution to help most people get things running it a few minutes. It also now gives vicidial users secure passwords without having to install additional perl encryption libraries.
That being said, it "SEEMS" like you can just pull the latest svn vicidial version and put it into /usr/src/goautodial/astguiclient/ then do a regular vicidial upgrade and then update the database.
Possible caveats to test. Enabling the web option in the current version of goautodial "should not" cause any problems since goautodial understands the current database structure, vicidial program options/output etc. Although it is now possible to "change" things in vicidial admin that could possibly break goautodial, but is seems unlikely, but if think you did something, you can change it back.
You could upgrade to the latest version of vicidial and it could "possibly" be something that goautodial doesn't understand, doesn't update, or loses it value that vicidial admin set. Look at the feature, upgrade list of vicidial if you are thinking of upgrading. If is just bug fixes it should be fine. If its new features test the new features with goautodial (have a restore plan). If the database is updated with new columns it may not matter to goautodial depending on what it does, so test,test,test. Backup first though
Backup everything or run a new install to be safe.
First follow the steps here https://goautodial.net/d/4-goautodial-v ... l-on-linux if needed or doing a new install. If you have an existing install check some of the settings shown there. The instructions will work if you dont do anything on that link, but it is a baseline that works.
Next for the impatient: (Detailed explanation at the bottom)
sudo cd /usr/src/goautodial/astguiclient/
sudo perl install.pl --web-only
Answer n when asked if you did a default install.
If you dont have your real certs installed (not self signed) do the following: - You can skip this step if you dont have certs. It not needed for this to work but some people may find it helpful
sudo cp /etc/letsencrypt/live/--YOUR DOMAIN NAME--/certs.pem /etc/pki/tls/certs/localhost.crt
sudo cp /etc/letsencrypt/live/--YOUR DOMAIN NAME--/privkey.pem /etc/pki/tls/private/localhost.key
(NOTE: These are just your cert files and can come wherever you have them. They may not be in /etc/letsencrypt... but they must replace the localhost.crt and localhost.key)
sudo mv /etc/httpd/conf.d/fpm.conf /etc/httpd/conf.d/fpm.conf.orig
sudo mysql asterisk -A
update vicidial_users set load_leads='1', campaign_detail='1',ast_admin_access='1',modify_users='1',alter_agent_interface_options='1',modify_same_user_level='1' where user = 'goadmin';
sudo cp /var/www/html/agc/bp.pl /var/www/html/agc/bp.pl.old
sudo vi /var/www/html/agc/bp.pl
Replace the contents with:
#!/usr/bin/perl
if (length($ARGV[0])>1)
{
$i=0;
while ($#ARGV >= $i)
{
$args = "$args $ARGV[$i]";
$i++;
}
if ($args =~ /--pass=/i)
{
@data_in = split(/--pass=/,$args);
$pass = $data_in[1];
$pass =~ s/ .*//gi;
$php_script = '
require("dbconnect_mysqli.php");
require("functions.php");
$stmt = "SELECT pass_key,pass_cost FROM system_settings;";
$rslt=mysql_to_mysqli($stmt, $link);
$qm_conf_ct = mysqli_num_rows($rslt);
if ($qm_conf_ct > 0)
{
$row=mysqli_fetch_row($rslt);
$SSpass_key = $row[0];
$SSpass_cost = $row[1];
$pass_options = ["cost" => $SSpass_cost,"salt" => base64_encode($SSpass_key)];
$pass_hash = password_hash($argv[1], PASSWORD_BCRYPT, $pass_options);
$pass_hash = substr($pass_hash, 29, 31);
echo "PHASH: $pass_hash\n";
}
';
open my $sm, "|php -r '$php_script' -- $pass" or die "could not run inline php script";
close $sm;
}
}
Reboot your system
https://--YOUR DOMAIN NAME--/vicidial/welcome.php
You should be able to login with goadmin and its password. If your password contains special characters like \ $ " | ; vicidial will strip them from the password, so if you have trouble logging into vicidial change the password in goautodial and then try to log into vicidial again.
NOTES:
You can use the currenlty created goadmin user as an admin after it has been updated. That is what the SQL does. The existing goadmin is in the ADMIN group but cannot access many admin items. Be mindful of how your changes could affect goautodial since you have new powers now.
It "SEEMS" like goautodial is just installing a normal vicidial install according to goautodials install script. The install script specifically installs vicidial with the --no-web option.
I think the reason for this is 2 fold.
1. goautodial is running with php-fpm which is bad for vicidial Basic Authentication. The PHP_AUTH_USER, PHP_AUTH_PW would not be set so you will get the login prompts but your user/pass are never passed to vicidial.
I could only get it to run without https using a vhost and adding RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
the best solution (at least for me) was to disable php-fpm. Thats is why php-fpm.conf was renamed so it wont run. Maybe vicidial 9.02, 9.1 or 10 can use authentication like the Agent Login screen and not PHP Basic Authentication. Then php-fpm can be used again.
2. goautodial is using php for the password hash and not perl. Any passwords saved to vicidial from goautodial would not be able to be used by the vicidial web app.
That is what the new bp.pl is doing by using the same password algorithm. There are some detailed explanations to disable password hashing but then all the password would need to be decoded and updated in vicidial_users. But I believe most people are not programming or SQL experts so the new bp.pl may not be elegant, but its a simple solution to help most people get things running it a few minutes. It also now gives vicidial users secure passwords without having to install additional perl encryption libraries.
That being said, it "SEEMS" like you can just pull the latest svn vicidial version and put it into /usr/src/goautodial/astguiclient/ then do a regular vicidial upgrade and then update the database.
Possible caveats to test. Enabling the web option in the current version of goautodial "should not" cause any problems since goautodial understands the current database structure, vicidial program options/output etc. Although it is now possible to "change" things in vicidial admin that could possibly break goautodial, but is seems unlikely, but if think you did something, you can change it back.
You could upgrade to the latest version of vicidial and it could "possibly" be something that goautodial doesn't understand, doesn't update, or loses it value that vicidial admin set. Look at the feature, upgrade list of vicidial if you are thinking of upgrading. If is just bug fixes it should be fine. If its new features test the new features with goautodial (have a restore plan). If the database is updated with new columns it may not matter to goautodial depending on what it does, so test,test,test. Backup first though