The Shady SEO Email Sales Pitch & Why I’m building A Public API To Stop IT!

Doing legitimate business now days is becoming quite cumbersome but you know what really grinds my gears (Peter Griffin reference lol…)? Shady SEO sales emails, I have a lot of SEO clients who seem to be receiving emails from salesmen with fake GMail accounts promising them better ranking through their site’s contact forms. The problem is the clients receiving these emails are clients already Ranking 1-5 on Google, Bing & Yahoo. Here is an example of what these sales emails look like…

Cristina Matthews
phone:206-309-XXXX
email:matthewscristina12@gmail.com

we can help your website to get on first page of google and increase the number of leads and sales you are getting from your website. please email us back for full proposal.

best regards,
cristina

It takes in some cases a lot of work to get these clients to the first page of any search engine and these clowns try to take advantage of uninformed business owners by getting them to try to switch to them. Now I have no problem with honest business but this is just shady period!. If you’re so confident about your process, business or model why send out covert emails? Why would you be pitching SEO incognito?
People like this make me sick and have no sense of honor, most likely trained by some sales clown with a suit in a call center (shell company) who resells one-size-fits-all SEO packages for another “SEO” company who wants to make easy money from people who already have put in the hard work. I have already built an anti-solicitation framework for internal business operations to try to eliminate these type of sales pitches but now I’m going to take it a step further.
For the next few weeks I will be working on a public API to stop all people with flagged email and IP addresses associated with these types of sales tactics. Just for fun I am thinking of also putting up a public wall of shame for people to view the type of shady emails sales pitches to look out for.

Installing OwnCloud On Ubuntu Server 12.04 With SSL Support

Tired of paying for dropbox services? Why not use owncloud to setup your own personal and secure dropbox for free :)

 

Follow the steps below as root:

 

  1. Bash in to get root access… ( sudo bash ).
  2. Install server dependances ( apt-get install apache2 php5 php5-gd php-xml-parser php5-intl vim-nox ).
  3. Install more server dependances ( apt-get install php5-sqlite php5-mysql php5-pgsql smbclient curl libcurl3 php5-curl ).
  4. Download owncloud source files from http://owncloud.org/sync-clients/#linux
  5. Upload extracted files to your apache root ( default is located at /var/www ), you can install vsftpd server( apt-get install vsftpd )or any other type of ftp server service.
  6. Inside your owncloud root directory create a new folder called “data” ( mkdir data )
  7. For owncloud to configure & work correctly apache needs to be given ownership of certain folders so their is no problem for apache to read and write data inside your website.Run the following commands.
    ( chown -R www-data:www-data /var/www/apps )
    chown -R www-data:www-data /var/www/config )
    chown -R www-data:www-data /var/www/data )Note: Keep in mind that /var/www is just the default root folder of apache yours might be different, just make sure you make the appropriate changes so they point to your apache/web install.

     

  8. Your going to want to enable mod_rewrite ( a2enmod rewrite ).
  9. Restart your apache service ( service apache2 restart )
  10. Create a new database in mysql and call it owncloud, create a new user and password with specific access to the owncloud database. These credentials will be used later in the process.

 

Now lets install our SSL and get it configured correctly:

 

  1. Enable SSL Module ( a2enmod ssl )
  2. Now your going to want to create a directory to store your SSL certs ( mkdir /etc/apache2/ssl )
  3. now lets generate a general cert with the following command ( openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt )

    Note: Your going to be asked a couple of questions after you run this command, answer them as accurate as possible as this will be displayed on your cert when people try to access your site.
  4. Edit default-ssl in sites-available folder in your apache install ( vim /etc/apache2/sites-available/default-ssl ) and comment out lines add the following lines 51 & 52 (use a #).
    Then add the following lines right under
    (

    SSLCertificateFile /etc/apache2/ssl/apache.crt

    SSLCertificateKeyFile /etc/apache2/ssl/apache.key 

    )

     

  5. Finally run ( a2ensite default-ssl )
  6. Restart your apache service ( service apache2 restart )

 

At this point your should be able to visit your box’s url ( https://localhost or https://127.0.0.1 or https://www.yourdomain.com ) and finish installing owncloud with the native install wizard.
Once your install is complete you will be able to download ownclouds own filesync client or you can use a WebDAV client to navigate through your files. You can do the same for your mobile device or tablet.

Google Maps Error 610 Bad Key, Responsive HTML5 Google Map API V3

 

Getting a 610 error response from Google lately? Perhaps you have a bad API key? Not really it actually might be because Google deprecated support for their API V2…

 

Want to learn how to make a responsive google map for your site using PHP & HTML5 on API 3? here is how…

 

Note: In API V3 you do not require or use an api key.

 

Objectives:
Create a quick solution to produce responsive HTML5 Google Maps on the fly.

  1. write HTML
  2. write CSS
  3. write php/curl function
  4. example of use
  5. sample

First we will begin with a quick HTML wrapper and to place our iframe in…

[cc lang=”html”]

[/cc]

 

Use CSS to control the iframe and wrapper, this will also keep iframe in widescreen/16:9

[cc lang=”css”]

.wrapper

{
height: 0;
padding-bottom: 56.25%; /* 16: 9 */
position: relative;
width: 100%;
margin: 0;
overflow: hidden;
}
iframe

{
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
border: 0;
overflow: hidden;
}

[/cc]

 

Now lets create the function that will generate a iframe tag on the fly by simply passing 1 value… an address
[cc lang=”php”]
# google map iframe generation
function gMap($a)
{
// setting up vars
$lat = ”;
$lon = ”;
$addr = $a;
$addr = urlencode($addr);
$u=”http://maps.googleapis.com/maps/api/geocode/json?address=”.$addr.”&sensor=false”; // URL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $u);
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER[“HTTP_USER_AGENT”]);
// Comment out the line below if you receive an error on certain hosts that have security restrictions
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$d = curl_exec($ch);
curl_close($ch);
$g = json_decode($d, true);
// Debugging Purposes… or if you wanna use additional data…
//echo ‘

';
//print_r($g);
//echo '

‘;
// If the Json request was successful…
if ($g)
{
$lat = $g[‘results’][0][‘geometry’][‘location’][‘lat’];
$lon = $g[‘results’][0][‘geometry’][‘location’][‘lng’];
$m = ‘‘;
echo $m;
} else {
echo ”

No Map Available

“;
}
}
[/cc]

 

Our php then goes inside the div
[cc lang=”php”]

< ?php // you can insert a var instead of string if you wish ex: gMap($address) gMap('48034 Rancho Way Temecula CA, 92592'); ?>

[/cc]

 

An example of a running script
[cc lang=”php”]
< ?php # google map iframe generation function gMap($a) { // setting up vars $lat = ''; $lon = ''; $addr = $a; $addr = urlencode($addr); $u="http://maps.googleapis.com/maps/api/geocode/json?address=".$addr."&sensor=false"; // URL $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $u); curl_setopt($ch, CURLOPT_HEADER,0); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]); // Comment out the line below if you receive an error on certain hosts that have security restrictions curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $d = curl_exec($ch); curl_close($ch); $g = json_decode($d, true); // Debugging Purposes... or if you wanna use additional data... //echo '

‘;
//print_r($g);
//echo
;
// If the Json request was successful…

if ($g)
{
$lat = $g[‘results’][0][‘geometry’][‘location’][‘lat’];
$lon = $g[‘results’][0][‘geometry’][‘location’][‘lng’];
$m = ‘‘;
echo $m;
} else {
echo ”

No Map Available

“;
}
}

?>

< ?php // you can insert a var instead of string if you wish ex: gMap($address) gMap('48034 Rancho Way Temecula CA, 92592'); ?>

[/cc]

Let me know if you have any questions. :)

Installing And Securing phpmyadmin In Ubuntu Server 12.04/12.04.2

This post is important because phpmyadmin no longer just works after apt-get install, it requires additional steps to get working.
Aside from these changes, due to recent reports on phpmyadmin being exploited it’s important to secure it, you can do this in a couple of ways but I am going to assume you want access to it via web.

2 Parts

  1. Installation of phpmyadmin
  2. Securing the installation via htaccess
  3. Discussing more secure methods of accessing phpmyadmin

 

Lets begin the install muahahaha…

 

Enter root mode:

sudo bash

 

Install:

apt-get install phpmyadmin

 

Open Apache Config File

vim /etc/apache2/apache2.conf

 

Insert the following line at the very bottom of apache2.conf

Include /etc/phpmyadmin/apache.conf

 

Restart Apache server:

service apache2 restart

 

Securing phpmyadmin from public access to web panel…

 

Edit phpmyadmin’s apache configuration file:

vim /etc/phpmyadmin/apache.conf

 

Under the directory section (<Directory /usr/share/phpmyadmin>), add the line “AllowOverride All” under “Directory Index”:

        <Directory /usr/share/phpmyadmin>
        Options FollowSymLinks
        DirectoryIndex index.php
        AllowOverride All

 

create .htaccess file in phpmyadmin’s root directory:

vim /usr/share/phpmyadmin/.htaccess

Copy the following into the newly created .htaccess file:

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /var/.htpasswd (make sure you set this path to a secure place outside your web root)
Require valid-user

 

Generate the password file where passwords will be stored for authentication/access to phpmyadmin root

htpasswd -c  /var/.htpasswd username (username should be your username, you will be asked for your password once you execute the command)

 

Restart Apache so updates can take effect:

service apache2 restart

 

If you want this to be more secure then I would suggest rethinking your server/network architecture…

  1. seperate your apache and mysql services into their own box
  2. only have apache server open on port 80 (public) and have it talk to your mysql server locally.
  3. if you need to change something in your database or need to access phpmyadmin I would vpn into your local network and access the mysql/phpmyadmin box.

If you have any questions or comments use the section below :)

How to Remove LiveZilla’s Footer/Credits From Version 3.3.2.2

This is a sequal to my former livezilla post, How to Remove LiveZilla’s Footer/Credits. In this post I will cover some simple changes to the version 3.3.2.2. I decided to cover this version because it was the last open source version before they went corporate… The objectives will remain the same:

  • remove all Open Source branding…
  • edit the carrier_logo.gif image to represent you company’s brand/logo
  • change the livezilla header breadcrumb
  • change footer code that shows LiveZilla Credits

If you haven’t already figured out to install the livezilla server files in a folder called live-chat or live-support. Do it now, its SEO friendly :) Once you have installed your server files make sure they are located one level up of your root directory (root:/live-chat/) this will make everything look more professional in the long run. Once the steps above have been completed locate the file named lz_chat_frame.4.1.tpl this file should be located at: root:/live_chat/templates/frames/ once located the file should look similar to this: lz_chat_frame.4.1.tpl

 

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>

<html>
<head>
<META NAME=”robots” CONTENT=”index,follow”>
<title><!–config_gl_site_name–></title>
<link rel=”stylesheet” type=”text/css” href=”./templates/style.css”>
</head>
<body topmargin=”0″ leftmargin=”0″>
<div id=”lz_chat_param”><!–param–></div>
</body>
</html>

 

Remove <!–param–> and repace it with your company name so it looks like the source below. Updated lz_chat_frame.4.1.tpl

 

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>

<html>
<head>
<META NAME=”robots” CONTENT=”index,follow”>
<title><!–config_gl_site_name–></title>
<link rel=”stylesheet” type=”text/css” href=”./templates/style.css”>
</head>
<body topmargin=”0″ leftmargin=”0″>

<div id=”lz_chat_param”>www.mywebsite.com</div></body></html>

 

This takes care of the footer..   Now lets focus on the header…   We need to find the following comment and delete it or replace it with your company brand/name
<!–config_gl_site_name–> You can find these comments in the following template files…

  1. lz_chat_frame.3.2.login.0.0.tpl (Line 13)
  2. lz_chat_frame.3.2.mail.tpl (Line 14)

Now Lets make sure our page title displays the right brand/name We need to find the following comments and remove/replace them with your brand/name
<!–config_gl_site_name–>
You can find these comments in the following template files…

  1. lz_chat_frame.1.1.tpl (Line 5)
  2. lz_chat_frame.3.2.chat.0.0.tpl (Line 5)
  3. lz_chat_frame.3.2.chat.2.0.tpl (Line 5)
  4. lz_chat_frame.3.2.chat.3.0.tpl (Line 5)
  5. lz_chat_frame.3.2.chat.4.0.tpl (Line 5)
  6. lz_chat_frame.3.2.chat.5.0.tpl (Line 5)
  7. lz_chat_frame.3.2.chat.tpl (Line 6)
  8. lz_chat_frame.3.2.login.0.0.tpl (Line 5)
  9. lz_chat_frame.3.2.login.1.0.tpl (Line 5)
  10. lz_chat_frame.3.2.login.tpl (Line 5)
  11. lz_chat_frame.3.2.mail.tpl (Line 5)
  12. lz_chat_frame.4.1.tpl (Line 5)

After Removing, update files and your good to go! Thats it! Kiss the title, footer and breadcrumb’s gone!

 

If you have any questions just hit me up below.

How to Remove LiveZilla’s Footer/Credits

If you’re like me footers with forced credits aren’t cool, although sometimes someones work deserves credit it can ruin a visitors perspective who is expecting a brand.
In this quick tutorial I will show you how to remove all the LiveZilla Credits from the UI so visitors will never know your are using an open source support client. This can be achieved by following 2 simple steps:

  • edit the carrier_logo.gif image to represent you company’s brand/logo.
  • change footer code that shows LiveZilla Credits

If you haven’t already figured out to install the livezilla server files in a folder called live_chat or live_support. Do it now, its SEO friendly :)

Once you have installed your server files make sure they are located one level up of your root directory (root:/live_chat/) this will make everything look more professional in the long run.

Once the steps above have been completed locate the file named lz_chat_frame.4.1.tpl this file should be located at:

root:/live_chat/templates/frames/

once located the file should look similar to this:

lz_chat_frame.4.1.tpl
[cc=”html”]

 

[/cc]
Remove Line 13 so it looks like the source below.

Updated lz_chat_frame.4.1.tpl
[cc=”html”]

 

[/cc]

Thats it! Kiss the footer and the breadcrumb’s root gone!

 

I have updated this tutorial for version 3.3.2.2 (last open source version) at the following post /how-to-remove-livezillas-footercredits-from-version-3-3-2-2/

Adding Live Chat/Support To Your Website for Free!

If you are like me and have to have the latest technologies on your clients sites then I am sure you have come to the Live Support Services quarrel. Keeping in mind that clients don’t have thousands of dollars to build a proprietary solution its was clear that open source was the way to go. After hours of searching and testing various open source clients/software one stood out more then the rest, LiveZilla (http://www.livezilla.net/home/en/). This software is one of the most complete open source Live Support packages available to the public for free. The bundled software included both server side and client side applications which eliminates agents from having to be logged into the sites control panel. Providing an Instant Messenger Interface that seamlessly connects the site’s support function to the agents desktop. LiveZilla not only provides real time live support but also live tracking and logging, keeping all visitors, conversations and documents stored in a local database. LiveZilla also has visitor Geo-location by using Google’s IP Location API (upgrade). If your company is looking for a quick and professional Live Support Solution you might want to take a look at the software. The source code is provided and with an experienced PHP/MYSQL programmer it can be infinitely customized to reflect your clients standards.

If you are serious about Live Support try it.

In the next post I will be covering how to remove LiveZilla logos, text, and footer copyright information from your chat window to make your live support services look more professional to visitors.