Editar el archivo my.cnf de mysql
sudo nano /etc/mysql/my.cnf
Agregar al final del archivo lo siguiente:
[mysqld]
port = 3306
sql_mode = NO_AUTO_VALUE_ON_ZERO
Reiniciar el servicio de mysql
sudo service mysql restart
Editar el archivo my.cnf de mysql
sudo nano /etc/mysql/my.cnf
Agregar al final del archivo lo siguiente:
[mysqld]
port = 3306
sql_mode = NO_AUTO_VALUE_ON_ZERO
Reiniciar el servicio de mysql
sudo service mysql restart
En este tutorial veremos cómo instalar PHP para SQL Server, en este ejemplo usaremos la versión 7.0, si se desea la versión 7.2 sólo es reemplazar, usaré Ubuntu 16.04 pero puede funcionar con otras versiones.
sudo su add-apt-repository ppa:ondrej/php -y apt-get update apt-get install php7.0 php7.0-dev php7.0-xml -y --allow-unauthenticated
Prerequisitos:
sudo su curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - #Download appropriate package for the OS version #Choose only ONE of the following, corresponding to your OS version #Ubuntu 14.04 curl https://packages.microsoft.com/config/ubuntu/14.04/prod.list > /etc/apt/sources.list.d/mssql-release.list #Ubuntu 16.04 curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list #Ubuntu 17.10 curl https://packages.microsoft.com/config/ubuntu/17.10/prod.list > /etc/apt/sources.list.d/mssql-release.list exit sudo apt-get update sudo ACCEPT_EULA=Y apt-get install msodbcsql17 # optional: for bcp and sqlcmd sudo ACCEPT_EULA=Y apt-get install mssql-tools echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc source ~/.bashrc # optional: for unixODBC development headers sudo apt-get install unixodbc-dev
Drivers PHP para Microsoft SQL Server:
sudo pecl install sqlsrv sudo pecl install pdo_sqlsrv sudo su echo extension=pdo_sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/30-pdo_sqlsrv.ini echo extension=sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/20-sqlsrv.ini exit
Apache:
sudo su apt-get install libapache2-mod-php7.0 apache2 a2dismod mpm_event a2enmod mpm_prefork a2enmod php7.0 echo "extension=pdo_sqlsrv.so" >> /etc/php/7.0/apache2/conf.d/30-pdo_sqlsrv.ini echo "extension=sqlsrv.so" >> /etc/php/7.0/apache2/conf.d/20-sqlsrv.ini exit
Reiniciar apache
sudo service apache2 restart
Fuente:
En la raíz se crea el archivo .htaccess con las ip a las cuales se les permite el acceso y la url del archivo que se va a abrir si no está dentro de las ip permitidas.
sudo nano .htaccess
<RequireAny> Require ip 190.248.159.226 Require ip 190.248.159.227 </RequireAny> ErrorDocument 403 /error/403.php
Se debe crear la carpeta error y dentro de ella su respectivo .htaccess
<RequireAll> Require all granted </RequireAll>
Dentro de la carpeta error se crea el archivo 403.php con el siguiente contenido:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <script src="//use.fontawesome.com/84c9ca0cf8.js"></script> <title>403 Acceso Denegado</title> <style type="text/css"> @import url('//fonts.googleapis.com/css?family=Roboto'); body { background: #2e739a; color: #D7D7D7; font: 16px/1.3 "Roboto", sans-serif; } header { width: 100%; margin:0px auto; } h1 { text-align: center; color:#D7D7D7; font: 30px/1 "Roboto"; text-transform: uppercase; margin: 5% auto 5%; margin-bottom: 35px; } article { display: block; text-align: center; width: 650px; margin: 10px auto; } @media screen and (max-width: 720px) { article { display: block; text-align: center; width: 450px; margin: 0 auto; } h1 { font: 70px/1 "Roboto";} .wrap {margin-top: 50px;} } @media screen and (max-width: 480px) { article { display: block; text-align: center; width: 300px !important; margin: 0 auto; } h1 { font: 50px/1 "Roboto";} .wrap {margin-top: 50px;} } </style> <!--[if IE]><script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]--> </head> <body> <div class="wrap"> <article> <header> <h1 id="fittext1">Error 403<i class="fa fa-exclamation-triangle fa-fw"></i></h1> </header> <p id="fittext2">Acceso Denegado </br> Su IP <?php echo $_SERVER['REMOTE_ADDR']; ?> no está autorizada para ver este contenido </br> Por favor contacte al administrador</p> </article> </div> <script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/FitText.js/1.2.0/jquery.fittext.js"></script> <script type="text/javascript"> $("#fittext1").fitText(1.1); $("#fittext2").fitText(1.5); </script> </body> </html>
A continuación como enviar mensajes a tráves de la API de Telegram a un canal:
https://api.telegram.org/bot[BOT_API_KEY]/sendMessage?chat_id=[NOMBRE_DEL_CANAL_O_ID]&text=[MENSAJE]
$apiToken = "my_bot_api_token"; $data = [ 'chat_id' => '@my_channel_name', 'text' => 'Hello world!' ]; $response = file_get_contents("https://api.telegram.org/bot$apiToken/sendMessage?" . http_build_query($data) );
Editar el archivo:
/etc/apache2/apache2.conf
Agregar la línea:
<Directory /var/www/html/> AllowOverride All </Directory>
Luego crear el archivo .htaccess:
<RequireAny> Require ip 190.248.159.226 Require ip 190.248.159.227 </RequireAny> Se pueden extraer las ip por paises en la página https://www.ip2location.com/free/visitor-blocker
https://sourceforge.net/projects/icompress/
MassImageCompressor reduce el tamaño de imagen considerable (> 90%) según las dimensiones y los parámetros de calidad seleccionados por el usuario. Reduzca todas las imágenes en una carpeta (y opcionalmente subcarpetas) con un solo clic. Mass Image Compression para páginas web, correo electrónico o almacenamiento en dispositivos móviles nunca fue tan fácil. Se conservan todos los metadatos de imagen (etiquetas EXIF).
Editar el archivo: layouts\vlayout\modules\Vtiger\ListViewContents.tpl
Entrar en la línea 135 Justo antes de <table class=”emptyRecordsDiv”> y agregar un if:
{if $MODULE!='Quotes' && $MODULE!='Invoice' && $MODULE!='SalesOrder' } <table class="emptyRecordsDiv"> <tbody> <tr> <td> {assign var=SINGLE_MODULE value="SINGLE_$MODULE"} {vtranslate('LBL_EQ_ZERO')} {vtranslate($SINGLE_MODULE, $MODULE)} {vtranslate('LBL_FOUND')}.{if $IS_MODULE_EDITABLE} {vtranslate('LBL_CREATE')} <a href="{$MODULE_MODEL->getCreateRecordUrl()}">{vtranslate($SINGLE_MODULE, $MODULE)}</a>{/if} </td> </tr> </tbody> </table> {/if}
Habilitamos el uso de los cdr_custom
nano /etc/asterisk/cdr_custom.conf
Modificando la linea [mappings], quitandole los comentarios
[mappings] calls.csv => ${CSV_QUOTE(${CDR(accountcode)})},${CSV_QUOTE(${CDR(src)})},${CSV_QUOTE(${CDR(dst)})},${CSV_QUOTE(${CDR(dcontext)})},${CSV_QUOTE(${CDR(clid)})},${CSV_QUOTE(${CDR(channel)})},${CSV_QUOTE(${CDR(dstchannel)})},${CSV_QUOTE(${CDR(lastapp)})},${CSV_QUOTE(${CDR(lastdata)})},${CSV_QUOTE(${CDR(start)})},${CSV_QUOTE(${CDR(answer)})},${CDR(billsec)},${CSV_QUOTE(${CDR(duration)})},${CSV_QUOTE(${CDR(end)})},${CSV_QUOTE(${CDR(disposition)})},${CSV_QUOTE(${CDR(amaflags)})},${CSV_QUOTE(${CDR(uniqueid)})},${CSV_QUOTE(${CDR(userfield)})}
Éstos archivos se guardan en la ruta /var/log/asterisk/cdr-custom/
yum install samba samba-client samba-common
nano /etc/samba/smb.conf
Dentro de global
[global] map to guest = bad user
/bin/systemctl restart smb.service
Luego se crean los puertos y se habilitan en el Firwall de Issabel
Powerbi muestra el error Host ‘host_name‘ is blocked because of many connection errors. Unblock with ‘mysqladmin flush-hosts’ luego de solicitar la actualización.
La solución es cambiar el valor predeterminado el cual es 10
SET GLOBAL max_connect_errors=10000;
Para consultar el cambio:
show variables like "max_connect_errors";