العاب خلفيات قرآن كريم
Shortlink

Script used to correct permission of files after suphp

#!/bin/bash

# For some stupid reason, cPanel screws up the directory permissions.
chmod 755 /opt/suphp
find /opt/suphp -type d -exec chmod 755 {} \;

# Ensure that the permissions are sane and won’t cause a 500 error.
for user in `/bin/ls /var/cpanel/users`; do

chown -R ${user}:${user} /home/${user}/public_html
chmod 755 /home/${user}/public_html
find /home/${user}/public_html -name “*.php” -exec chmod 644 {} \;
find /home/${user}/public_html -type d -exec chmod 755 {} \;

# Comment out Joomla-installed PHP overrides that are not compatible with suPHP.
find /home/${user}/public_html -name ‘.htaccess’ -exec sed -i -e ‘s/php_value/#php_value/’ {} \;
find /home/${user}/public_html -name ‘.htaccess’ -exec sed -i -e ‘s/php_flag/#php_flag/’ {} \;
done

# Delete former session variables due to suPHP no longer having permission to them.
rm -rf /tmp/sess_*

Shortlink

Script used to transfer account from cpanel server

#!/bin/bash

ls -1 /var/cpanel/users > /root/user_list

PORT=”22″

ssh-keygen -t dsa

KEY=`cat /root/.ssh/id_dsa.pub`

ssh $1 -p$PORT “mkdir -p /root/.ssh;echo ${KEY} >> /root/.ssh/authorized_keys” 2>&1
scp /var/cpanel/packages/* $1:/var/cpanel/packages/

for user in $(cat /root/user_list);do /scripts/pkgacct $user;done
scp /home/user_list $1:/home
scp /home/cpmove* $1:/home

Shortlink

Resize /tmp in cpanel servers

service chkservd stop
service httpd stop
service mysql stop
service postgresql stop

lsof | grep /tmp

kill the process

umount /var/tmp

umount /tmp

vi /scripts/securetmp

replace “256000? with “512000?

rm -rf /usr/tmpDSK
/scripts/securetmp –auto

cd /tmp

ln -s /var/lib/mysql/mysql.sock

service postgresql start
service mysql start
service httpd start
service chkservd start

Shortlink

/scripts/upcp hunging or rebuilding rpmdb

Your RPM database may be corrupted. So we need to rebuild the rpm database after deleting all rpm dbs from /var/lib/rpm.

Here are the steps:

rm /var/lib/rpm/__db.*

rpm –rebuilddb.

Shortlink

Directory Structure of CPanel

Apache
/usr/local/apache
+ bin- apache binaries are stored here – httpd, apachectl, apxs

+ conf – configuration files – httpd.conf

+ cgi-bin

+ domlogs – domain log files are stored here

+ htdocs

+ include – header files

+ libexec – shared object (.so) files are stored here – libphp4.so,mod_rewrite.so

+ logs – apache logs – access_log, error_log, suexec_log

+ man – apache manual pages

+ proxy -

+ icons -

Cpanel script to restart apache – /scripts/restartsrv_httpd

Start httpd with ssl – /etc/init.d/httpd startssl

DNS – Named(Bind)
Program: /usr/sbin/named

Init Script: /etc/rc.d/init.d/named

/etc/named.conf

db records:/var/named/

/var/log/messages

Exim
Conf : /etc/exim.conf – exim main configuration file

/etc/localdomains – list of domains allowed to relay mail

Log : /var/log/exim_mainlog – incoming/outgoing mails are logged here

/var/log/exim_rejectlog – exim rejected mails are reported here

/var/log/exim_paniclog – exim errors are logged here

Mail queue: /var/spool/exim/input

Cpanel script to restart exim – /scripts/restartsrv_exim

Email forwarders and catchall address file – /etc/valiases/domainname.com

Email filters file – /etc/vfilters/domainname.com

POP user authentication file – /home/username/etc/domainname/passwd

catchall inbox – /home/username/mail/inbox

POP user inbox – /home/username/mail/domainname/popusername/inbox

POP user spambox – /home/username/mail/domainname/popusername/spam

Program : /usr/sbin/exim (suid – -rwsr-xr-x 1 root root )

Init Script: /etc/rc.d/init.d/exim

Mysql
Program : /usr/bin/mysql

Init Script : /etc/rc.d/init.d/mysql

Conf : /etc/my.cnf, /root/.my.cnf

Data directory – /var/lib/mysql – Where all databases are stored.

Database naming convention – username_dbname (eg: john_sales)

Permissions on databases – drwx 2 mysql mysql

Socket file – /var/lib/mysql/mysql.sock, /tmp/ mysql.sock

SSHD
Program :/usr/local/sbin/sshd

Init Script :/etc/rc.d/init.d/sshd

/etc/ssh/sshd_config

Log: /var/log/messages

ProFTPD
Program :/usr/sbin/proftpd

Init Script :/etc/rc.d/init.d/proftpd

Conf: /etc/proftpd.conf

Log: /var/log/messages, /var/log/xferlog

FTP accounts file – /etc/proftpd/username – all ftp accounts for the domain are listed here

Pure-FTPD
Program : /usr/sbin/pure-ftpd

Init Script :/etc/rc.d/init.d/pure-ftpd

Conf: /etc/pure-ftpd.conf

Anonymous ftp document root – /etc/pure-ftpd/ip-address

Perl
Program :/usr/bin/perl

Directory :/usr/lib/perl5/5.6.1/

PHP
Program :/usr/local/bin/php, /usr/bin/php

ini file: /usr/local/lib/php.ini – apache must be restarted after any change to this file

Cpanel
/usr/local/cpanel

+ 3rdparty/ – tools like fantastico, mailman files are located here

+ addons/ – AdvancedGuestBook, phpBB etc

+ base/ – phpmyadmin, squirrelmail, skins, webmail etc

+ bin/ – cpanel binaries

+ cgi-sys/ – cgi files like cgiemail, formmail.cgi, formmail.pl etc

+ logs/ – cpanel access log and error log

+ whostmgr/ – whm related files

WHM
/var/cpanel – whm files

+ bandwidth/ – rrd files of domains

+ username.accts – reseller accounts are listed in this files

+ packages – hosting packages are listed here

+ root.accts – root owned domains are listed here

+ suspended – suspended accounts are listed here

+ users/ – cpanel user file – theme, bwlimit, addon, parked, sub-domains all are listed in this files

+ zonetemplates/ – dns zone template files are taken from here

Important cpanel/whm files
/usr/local/apache/conf/httpd.conf – apache configuration file

/etc/exim.conf – mail server configuration file

/etc/named.conf – name server (named) configuration file

/etc/proftpd.conf – proftpd server configuration file

/etc/pure-ftpd.conf – pure-ftpd server configuration file

/etc/valiases/domainname – catchall and forwarders are set here

/etc/vfilters/domainname – email filters are set here

/etc/userdomains – all domains are listed here – addons, parked,subdomains along with their usernames

/etc/localdomains – exim related file – all domains should be listed here to be able to send mails

/var/cpanel/users/username – cpanel user file

/var/cpanel/cpanel.config – cpanel configuration file ( Tweak Settings )*

/etc/cpbackup-userskip.conf -

/etc/sysconfig/network – Networking Setup*

/etc/hosts -

/var/spool/exim -

/var/spool/cron -

/etc/resolv.conf – Networking Setup–> Resolver Configuration

/etc/nameserverips – Networking Setup–> Nameserver IPs ( FOr resellers togive their nameservers )

/var/cpanel/resellers – For addpkg, etc permissions for resellers.

/etc/chkserv.d – Main >> Service Configuration >> Service Manager *

/var/run/chkservd – Main >> Server Status >> Service Status *

/var/log/dcpumon – top log process

/root/cpanel3-skel – skel directory. Eg: public_ftp, public_html. (AccountFunctions–>Skeleton Directory )*

/etc/wwwacct.conf – account creation defaults file in WHM (Basic cPanel/WHMSetup)*

/etc/cpupdate.conf – Update Config *

/etc/cpbackup.conf – Configure Backup*

/etc/clamav.conf – clamav (antivirus configuration file )

/etc/my.cnf – mysql configuration file

/usr/local/Zend/etc/php.ini OR /usr/local/lib/php.ini – php configuration file

/etc/ips – ip addresses on the server (except the shared ip) (IP Functions–>Show IP Address Usage )*

/etc/ipaddrpool – ip addresses which are free

/etc/ips.dnsmaster – name server ips

/var/cpanel/Counters – To get the counter of each users.

/var/cpanel/bandwidth – To get bandwith usage of domains

Shortlink

PHP: Short URL Algorithm Implementation

Few months ago, I introduced a simple algorithm that allow users to implement their own short URL into their system. Today, I have some spare time so I decided to write the short URL algorithm’s implementation in PHP.

At first, we define a function called shorturl() that receives a URL as the input and returns an array that contains 4 hashed values (each 6 characters).

function shorturl($input) {
   ...
  // return array of results
}

 

Below is the original pseudocode:

...
  loop2: from 1st 4 bytes to 4th 4 bytes of md5 result
    cast the 4 bytes to an integer
    loop3: for shortCodeChar[0] to shortCodeChar[5]
      use 1st 5 bits of the integer to find the value in codeMap
      remove 5 bits from the integer
    end loop3
    save shortCodeChar as shortCode
    ...
    // Database checking for duplication
  end loop2
...

The following code is written according to the algorithm above excluding the database checking part for duplication:

function shorturl($input) {
  $base32 = array (
    'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
    'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
    'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
    'y', 'z', '0', '1', '2', '3', '4', '5'
    );

  $hex = md5($input);
  $hexLen = strlen($hex);
  $subHexLen = $hexLen / 8;
  $output = array();

  for ($i = 0; $i < $subHexLen; $i++) {
    $subHex = substr ($hex, $i * 8, 8);
    $int = 0x3FFFFFFF & (1 * ('0x'.$subHex));
    $out = '';

    for ($j = 0; $j < 6; $j++) {
      $val = 0x0000001F & $int;
      $out .= $base32[$val];
      $int = $int >> 5;
    }

    $output[] = $out;
  }

  return $output;
}

Sample code to test/use the above function:

$input = 'http://www.snippetit.com/1';
$output = shorturl($input);

echo "Input  : $input\n";
echo "Output : {$output[0]}\n";
echo "         {$output[1]}\n";
echo "         {$output[2]}\n";
echo "         {$output[3]}\n";
echo "\n";

$input = 'http://www.snippetit.com/2';
$output = shorturl($input);

echo "Input  : $input\n";
echo "Output : {$output[0]}\n";
echo "         {$output[1]}\n";
echo "         {$output[2]}\n";
echo "         {$output[3]}\n";
echo "\n";

Output:

Input  : http://www.snippetit.com/1
Output : h0xg4r
         bdr3tw
         osk2d3
         4azfqa

Input  : http://www.snippetit.com/2
Output : tm5kxb
         ceoj2s
         yw3dvl
         nrmrxl

The function return an array of 4 elements, you can use any one of them. The others can be used as alternative unique code for the input when you found a duplicated code in your database (same code but different input – although it is unlikely to happen but it will happen). Chances to get a duplicated code is about n/(32^6) or n/1,073,741,824 where n is the number of records in your database.

As you can see, the output results are quite random although you only have one character different in the input string. The output is always consistent, for the same input you will always get the same output.

To make the output more unpredictable by the others, you can scramble the values in the $base32 array or/and add in your own private key or/and XOR the value of $val with a value from range 0 to 31.

For example to scramble the values in the $base32 array, you can change the position of the values or/and replace the value with another (make sure the replaced value is URL safe character).

For example to add in private key, you can add in additional string when calling the md5() function, e.g.:

$hex = md5('my-secret-key'.$input.'my-another-secret-key');

For example to XOR the value of $val with value of 18:

$out .= $base32[$val ^ 18];
Shortlink

What is pending delete

Pending Delete
What is pending delete?

Pending Delete is a status set by the WHO IS server for a domain name that has not been renewed. Domain names which expire normally get deleted. The registry will hold the name in the pending delete phase for some days. In the pending delete restorable state it is possible to recover the domain name within 30 days. The name can be recovered only by the original listed owner of the domain name in the WHO IS server. If the owner of the domain does not pay the restoration fee, then the registrar will drop the domain and it will be in the pending delete state for exactly 5 days.

If the registrar does not request the domain name to be in redemption grace period then the name automatically enters the redemption hold period where the status will be set to Pending Delete-Scheduled for Release. At this stage you cannot recover, modify or delete the domain name. It will soon be available for re-registration and so there is at least a chance of recovery during the pending delete-scheduled for release time. It is therefore strongly recommended to renew the domain name within the time limit.
Continue reading