PHP Bulk Emailer

If you send email to 5,000 people using standard PHP tools, your ISPs might be blocked in seconds.

I think you already read below articles…

Amazon Simple Notification Service Command Lines

Theory About Bulk Emails

Emails are not working on server?

Amazon SES – Emails In Cloud

Open source – Port25

Linux Mail Servers

Email’s Major Sections

Header – From, To, Subject, Date, Message-Id
Body – HTML / Text

Server must have …

* Dedicated public static IP address
* Reverse DNS record for IP address
* Contact info in WHOIS record
* Mailbox Tracker
* SPF Records
* Signed message using DKIM
* VERP – Variable envelope return path
* Automatic Bounce Handling
* Email Scheduler
* Email Subscribe / Unsubscribe
* Keep the IPs white-listed

Limit on servers

500/per hour on the Shared servers is the limit.

Other References

http://framework.zend.com/manual/en/zend.mail.html
http://pear.php.net/package/Mail_Queue
http://www.phplist.com/details
http://wiki.e107.org/index.php?title=Bulk_mailer_interface
http://swiftmailer.org/
http://sourceforge.net/projects/phpmailer/
http://mlmmj.org/
http://www.gnu.org/software/mailman/index.html

Install MovieMasher

Movie Masher open source flash based online video editing software and media player is free code to white label on your web site.

Movie Masher Feature

Movie Masher- Free Open Source Online Video Editor

Adobe Flash™ applets that provide front-end tools for common video editing tasks:

* Trim, composite and timeshift video
* Mix and fade multiple audio tracks
* Add effects, transitions and titling

An XML API is used to customize both the appearance and behavior of the tools:

* Colorize and reposition panels
* Reskin and bind interface controls
* Reconfigure bundled effects
* Integrate with CGI scripts

Customize Movie Masher Free Open Source Online Video Editor

Quick Start

1. transfer and decompress the applet archive to your web server.
2. load the /example/static/index.html file in your web browser.
3. read the README.txt files from other examples you want to run.
4. explore those examples by loading their index files in your browser.

Install Movie-Masher

# wget http://nchc.dl.sourceforge.net/project/moviemasher/moviemasher/3.1.13/MovieMasher_3-1-13.zip
# unzip MovieMasher_3-1-13.zip

Restart web server then point address bar to

http://server_ip:5080/moviemasher/example/static/index.html

Webisode

The webisode is simply a web episode, this is a new medium called web television that stream live broadcast, dramas, serial storyline, media events online over the Internet

The webisode is web episode especially viewed at a Web site for TV show have been telecast.

Technologies Used

* HTTP
* RSS/JSON
* RTSP/RTMP
* SMIL
* WTVML
* ASX
* MMS

Streaming Audio/Video formats

* Adobe Flash – MP3, FLV, MP4
* Microsoft Media – Silverlight, ASF, ASX, WAX, WMA, WMV
* RealNetworks – RM, RAM, RA, SMIL
* Apple QuickTime Audio/Video streams
* Shoutcast/Icecast – MP3, AAC, OGG
* MoveNetworks MoveMediaPlayer

CDN Used

* Amazon S3 CloudFront
* Google
* YouTube
* MaxCDN
* Rackspace CDN
* EdgeCast
* Flickr
* Akamai
* StreamGuys

Servers Used

* Wowza
* Adobe
* Red5
* SHOUTCast
* Windows Media Server

Clients Used

* Adobe – Flash Media Live Encoder
* Windows Media Encoder
* VLC Player
* SMPlayer
* SAMCast

Streaming Tools

* MPlayer
* FFmpeg
* RTMPDump
* VLC
* Flash Media Players
* HTML5

CMS Used

* Kaltura
* VidZapper

A webcast is a media streaming technology to distribute single media content source to many simultaneous listeners/viewers. The webcast might be distributed live or on demand. Webcasting is “broadcasting” over the Internet.

https://www.svnlabs.com/services/media-streaming

 

There are only two ways to live your life

Tolerate things the way they are…… Or take responsibility to change them.

Install OpenMeetings

OpenMeetings – An Open Source Web Conferencing Solution that share microphone or webcam, share documents on a white board, share your screen or record meetings.

Install Development Tools

# yum groupinstall “Development Libraries” -y
# yum groupinstall “Development Tools” -y

IPTables – Make sure the following firewall ports are open
1935 (RTMP), 8088 (RTMP-Over HTTP), 5080 (HTTP), 4445 (Desktop Sharing), 8443 (RTMP over SSL)

iptables -A INPUT -p tcp -m tcp –dport 1935 -j ACCEPT
iptables -A INPUT -p tcp -m tcp –dport 8088 -j ACCEPT
iptables -A INPUT -p tcp -m tcp –dport 5080 -j ACCEPT
iptables -A INPUT -p tcp -m tcp –dport 4445 -j ACCEPT
iptables -A INPUT -p tcp -m tcp –dport 8443 -j ACCEPT

# yum update

Edit MySQL config file: /etc/my.cnf, add multi-language(Chinese) support
[mysqld]
default-character-set=utf8
default-collation=utf8_general_ci
character-set-server=utf8
collation-server=utf8_general_ci
init-connect=’SET NAMES utf8′

[client]
default-character-set=utf8

[root@server3 ~]# java -version
java version “1.6.0_20”
OpenJDK Runtime Environment (IcedTea6 1.9.10) (rhel-1.23.1.9.10.el5_7-x86_64)
OpenJDK 64-Bit Server VM (build 19.0-b09, mixed mode)

Firewall configuration

http://wiki.centos.org/HowTos/SELinux

Security Level: Disabled
SELinux: Disabled

# sestatus

System servcies
………………………..

# ps aux | grep ‘service’

apmd
auditd
autofs
avahi-daemon
bluetooth
cpuspeed
cups
firstboot
gpm
hidd
ip6tables
iptables
irqbalance
mcstrans
mdmonitor
microcode_ctl
netfs
nfslock
pcscd
portmap
restorecond
rpcidmapd
rpcsvcgssd
sendmail
smartd
xfs
yum-updatesd

# rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

# vi /etc/rc.local

/usr/lib64/openoffice.org3/program/soffice “-accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager” -nologo -headless -nofirststartwizard &

# yum install freetype freetype-devel fontconfig fontconfig-devel java-1.6.0-openjdk-devel libtiff libtiff-devel libjpeg-devel libjpeg giflib giflib-devel libpaper libpaper-devel xml-commons-apis libpng libpng-devel libxml2 libxml2-devel fftw3 fftw3-devel cairo cairo-devel flac flac-devel wavpack wavpack-devel libsndfile libsndfile-devel libmad libmad-devel yasm-devel yasm gcc gcc-c++

# yum groupinstall ‘Office/Productivity’
# yum install openoffice.org-headless

# rpm -e –nodeps ghostscript ghostscript-devel

Install GhostScript

# cd /usr/src
# wget http://ghostscript.com/releases/ghostscript-8.71.tar.gz
# tar zxvf ghostscript-8.71.tar.gz
# cd ghostscript-8.71
# ./configure –prefix=/usr
# mkdir obj
# mkdir bin
# make all
# make install

Install LAME

# cd /usr/src
# wget http://downloads.sourceforge.net/project/lame/lame/3.98.4/lame-3.98.4.tar.gz
# tar zxvf lame-3.98.4.tar.gz
# cd lame-3.98.4
# ./configure –prefix=/usr
# make all
# make install

Install SWFTools

# cd /usr/src
# wget http://www.swftools.org/swftools-0.9.1.tar.gz
# tar zxvf swftools-0.9.1.tar.gz
# cd swftools-0.9.1
# ./configure –prefix=/usr
# make all
# make install

Install ImageMagick

# cd /usr/src
# wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-6.6.4-10.tar.gz
# tar zxvf ImageMagick-6.6.4-10.tar.gz
# cd ImageMagick-6.6.4-10
# ./configure –prefix=/usr
# make all
# make install

Install FFmpeg

# cd /usr/src
# svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
# cd ffmpeg
# ./configure –enable-libmp3lame –enable-postproc –enable-gpl –enable-pthreads –enable-avfilter –prefix=/usr
# make all
# make install

Install SOX

# cd /usr/src
# wget http://downloads.sourceforge.net/project/sox/sox/14.3.1/sox-14.3.1.tar.gz
# tar zxvf sox-14.3.1.tar.gz
# cd sox-14.3.1
# ./configure –prefix=/usr
# make all
# make install

Download OpenMeetings package

# cd /usr/src
# wget http://openmeetings.googlecode.com/files/openmeetings_1_6_2_r3675.zip
# unzip openmeetings_1_6_2_r3675.zip -d om

# cd /usr/src/om/red5/webapps/openmeetings/conf
# cp mysql_hibernate.cfg.xml hibernate.cfg.xml (add mysql password)

mysql> create database openmeetings;

# cd /usr/src/om/red5
# nohup ./red5.sh &

# nohup /usr/lib64/openoffice.org3/program/soffice “-accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager” -nologo -headless -nofirststartwizard &

http://SERVER_IP_ADDRESS:5080/openmeetings/install

Errors:

NetConnection.Call.Failed rtmpt://localhost:8088/openmeetings/hibernate

Stream Live Event Using VLC Media Player

Windows Media Encoder is a media encoder developed by Microsoft which convert or capture or broadcast both prerecorded & live media like audio, video and computer screens to WMV formats for live and on-demand service.

But if you are on Linux you must have some questions in mind…

1. How to Stream Online Using Internet Streaming Server
2. How to connect camera to the computer and using Media Server for live stream

In Linux environment VLC Media Player is best solution to stream live stream from camera to anywhere in world 😉

Quality vs Size

The Quality and Size always matter while you broadcast streams, but VLC provide you such a facility to manage your camera in real time and send some chunks over particular time interval to publishing point for live broadcast.

If you already plugged camera to your computer then you are ready to stream media to publishing point…

Now what is publishing point?

Publishing Point is a third party server used for providing media stream to real users on internet. Each time VLC send data in blocks to publishing point and users can access that point to enjoy real camera stream live.

You can convert any web server to Publishing Point, but this web server must be connected to internet with real public IP.

We have 2 options for Publishing Point:

1. You can use Port Forwarding if you have no web server with public IP installed on PC.
2. Else use real public IP with web server 😉

Port Forwarding Configuration: Router Setting allows to create, modify and delete port forwarding rules to work on your computers if the Internet connection uses NAT.

Advanced Stream Redirector

The Advanced Stream Redirector (ASX) format is used to store playlist of Windows Media files for a multimedia presentation using HTTP, RTSP and MMS streaming protocols.

ASF (Advanced Streaming Format) is a streaming media format developed by Microsoft. ASF files contain video, audio, slide shows and synchronized events for WMV files.

* The ASF file is media file, containing video, audio, etc.
* The ASX file is a metafile contains data about another file.

<asx version="3.0">
  <title>Video Live Stream</title>
 
  <entry>
    <title>SVNLabs Main Stream</title>
    <ref href="https://www.svnlabs.com/vod/media.wma" />
    <param name="aParameterName" value="aParameterValue" />
  </entry>
 
  <entry>
    <title>SVNLabs Radio</title>
    <ref href="https://www.svnlabs.com:8080" />
    <author>SVNLabs.com</author>
    <copyright>©2012 SVNLabs.com</copyright>
  </entry>

</asx>

PHP Advanced Stream Redirector

<?php

header("Content-Type: video/x-ms-asf;"); 

$title = isset($_REQUEST['title'])?$_REQUEST['title']:"";
$author = isset($_REQUEST['author'])?$_REQUEST['author']:"";
$file = isset($_REQUEST['file'])?$_REQUEST['file']:"";


echo "<asx version=\"3.0\">";
  echo "<title>".$title."</title>";
  echo "<entry>";
    echo "<title>".$title."</title>";
    echo "<author>".$author."</author>";
    echo "<ref href=\"https://www.svnlabs.com/vod/".$file."\"/>";
  echo "</entry>";
echo "</asx>";



?>

Demo: https://www.svnlabs.com/vod/vod.php?title=SVNLabs&author=SVNLabs&file=QFTkJ4gPbk9kiQhmhxmnqw.wmv

SoundCloud Application

Connect the World of Sound

* Share : http://developers.soundcloud.com/blog/sharing-sounds
* Stream : http://developers.soundcloud.com/blog/stream-and-download
* Customize : http://developers.soundcloud.com/blog/custom-players

SoundCloud Widgets

http://soundcloud.com/pages/widgets

http://soundcloud.com/svnlabs

API | Javascript SDK | Widget | Custom Player | oEmbed

API Wrapper for SoundCloud written in PHP with support for authentication using OAuth 2.0

<?php
try {
    $response = json_decode($soundcloud->get('me'), true);
} catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) {
    exit($e->getMessage());
}

?>

Demo Apps

https://github.com/mptre/ci-soundcloud
https://github.com/jazonv/soundclouder
https://github.com/fastfrwrd/joshuashank.com
https://github.com/thegreat/Drupal-SoundCloud
https://github.com/idflood/sndlite

There are many sound applications built using the SoundCloud API.

PHP Proxy Script

Glype web-based proxy provides a proxy service to users via a web browser. A proxy service downloads requested web pages bypassing censorship and restrictions and forwards to the user..

Glype Proxy Script

  • Free for personal use and affordable licensing options for commercial use.
  • Source Viewable and webmasters may modify the source code subject to the terms of the license.
  • Plug and Play. Simply upload, configure and go!
  • Admin Control Panel for easy management and configuration.
  • JavaScript Support provides increased compatibility with websites.
  • Skinable. A theme system allows for customization of your proxy.
  • Access Controls blacklist users by IP address and websites by domain name.
  • BlockScript™ Integration protects the proxy by blocking specificed countries, filtering companies, malicious traffic, bots and spiders, and more.
  • Unique URLs provide greater privacy by expiring URLs in the browser history at the end of a browsing session.
  • Plugins allow for easy installion of site-specific modifications. Useful for adding new functionality to websites.
  • Advanced Options let users change their user-agent and referrer, manage cookies, and remove JavaScripts and Flash.
  • The script requires PHP5 (or greater) with cURL enabled.

Proxy Script

BigBlueButton API in PHP

BigBlueButton -- Open Source Web Conferencing

BigBlueButton supports sharing of slides (PDF and PPT), video, whiteboard, chat, voice (using Asterisk or FreeSWITCH), and desktops. It’s built using over many open source components, runs on Mac, Unix, and PC computers, and is supported by a community that cares about good design and a streamlined user experience.

BigBlueButton is built using the following open source components:

Ubuntu, Flex SDK, Ghostscript, Grails, ActiveMQ, Asterisk, Image Magick, MySQL, nginx, Red5, swf Tools, Tomcat, Asterisk Java, Xuggler, Open Office…

BBB is available on Google Code

BigBlueButton is an open source web conferencing system that enables universities and colleges to deliver a high-quality learning experience to remote students.

See examples of how you can integrate BigBlueButton into your applications.

Create Your Own Meeting


<?php

$IP ‘yy.yy.xx.xxx’;  // Server IP where BigBlueButton (BBB) Installed

$Port 81;  // Server port to BBB i.e. 81

// Method: create – To create meeting

$string “createname=Test+Meeting&meetingID=accounts123&attendeePW=accounts123&moderatorPW=accounts123”;

$salt “XYBGDRYUOPLJMAWDGNHYDFFGHGJJ435D”;  // security salt for BBB & API

$sha sha1($string.$salt);

$link “name=Test+Meeting&meetingID=accounts123&attendeePW=accounts123&moderatorPW=accounts123&checksum=”.$sha;

?>

<a href=”http://<?php echo $IP?>:<?php echo $Port?>/bigbluebutton/api/create?<?php echo $link?>“>Create Meeting</a><br><br>

<?php

// Method: join – To join meeting

$string “joinfullName=Joe+User&meetingID=accounts123&password=accounts123”;

$salt “XYBGDRYUOPLJMAWDGNHYDFFGHGJJ435D”;

$sha sha1($string.$salt);

$link “fullName=Joe+User&meetingID=accounts123&password=accounts123&checksum=”.$sha;

?>

<a href=”http://<?php echo $IP?>:<?php echo $Port?>/bigbluebutton/api/join?<?php echo $link?>“>Join Meeting</a><br><br>

<?php

// Method: join – To join meeting as username

$string “joinfullName=Sandeep&meetingID=accounts123&password=accounts123”;

$salt “XYBGDRYUOPLJMAWDGNHYDFFGHGJJ435D”;

$sha sha1($string.$salt);

$link “fullName=Sandeep&meetingID=accounts123&password=accounts123&checksum=”.$sha;

?>

<a href=”http://<?php echo $IP?>:<?php echo $Port?>/bigbluebutton/api/join?<?php echo $link?>“>Join Meeting as sandeep</a><br><br>

<?php

// Method: isMeetingRunning – To check meeting is active/running

$string “isMeetingRunningmeetingID=accounts123”;

$salt “XYBGDRYUOPLJMAWDGNHYDFFGHGJJ435D”;

$sha sha1($string.$salt);

$link “meetingID=accounts123&checksum=”.$sha;

?>

<a href=”http://<?php echo $IP?>:<?php echo $Port?>/bigbluebutton/api/isMeetingRunning?<?php echo $link?>“>Check Meeting Running</a><br><br>

Create Your Own Meeting Link

Checkout other article “BigBlueButton on CentOS”

Download BBB.zip

Zones – MaxCDN Control Panel

A Content Delivery Network (CDN) enables site owner who demands a high performance, supremo visitor experience.

The MaxCDN Content Delivery Network efficiently delivers your site’s static files through hundreds of servers instead of slogging through a single host. This “smart route” technology distributes your content to your visitors via the city closest to them.

MaxCDN makes your site load faster… Much faster! Increased server capacity. Enhanced site….

Pull Zones

This Zone is for your every-day support files. A Pull Zone will automatically pull the data from a location that you specify upon the first request for the file. The files are served to the end user from either a subdomain of netdna-cdn.com or a custom domain (sub domain) of your choice that points to the CDN. The data is automatically purged from the server after an customizable amount of time.

Examples: Image Files, CSS Files, JavaScript Files

Push Zones

This Zone is built for larger files that rarely change. The data is uploaded to an account on our Storage Array which is then automagically pushed to all of our Edge Servers. The data is served to the end user from a domain (or sub domain) of your choice that points to the CDN. The files remain until modified or the zone is deleted.

Examples: Installers, E-Books, PDF’s

VOD Zones

This Zone is built for video and audio streaming. The data is uploaded to an account on our Storage Array which is then automagically pushed to all of our Edge Servers. The data is served from our specially modified WOWZA server using the RTMP (Real Time Media Protocol). The files remain until modified or the zone is deleted.

Examples: Flash, Windows Media, RealPlayer, Quicktime Files

Live Zones

This Zone is built specifically for live video or audio. The live content is received from a stream that is specified. The stream is then rebroadcast to the end users from a domain (or sub domain) of your choice that points to the CDN. The stream remains active until the zone is deleted.

Examples: Live webinar, Radio Station