monome is a unique device. Little Bird explains…
What is a monome? Monomes are fun to watch, but what is actually going on?
Comment?What is a monome? Monomes are fun to watch, but what is actually going on?
Comment?As the interface for your website, the menu gets plenty of action. You might want to tune it up a bit, adding something to make it special. Drupal has an extensive API for interacting with the menu items you create.
On our website, we wanted subtext for each primary menu item – as you see above. Drupal usually displays the link titles only. There is a description field for each menu item, and we thought that would be a great place to enter the subtext we enter. I set out to generate my own menu and place it in a block on my page. menu_navigation_links() looked like a promising function from the menu API.
I enabled the devel module and put the execute PHP block at the top of the page. I got to work creating the PHP that would do the trick. Dealing with arrays can be tricky if you don’t do it often. Using the PHP function print_r() , you can view the contents of your menu array. Like so:
< ?php
$menuitems = menu_navigation_links('primary-links', $level = 0);
print_r($menuitems);
?>
Once you have the PHP worked out, make sure the PHP filter module is enabled for the site under admin/build/modules. Create a block at admin/build/block. Insert PHP code and change the input type to PHP.
< ?php
//Get the menu structure and place in a variable. An array is returned.
$menuitems = menu_navigation_links('primary-links', $level = 0);
//Loop through the menu items, setting two classes for the design and outputting what we want
foreach ($menuitems as $key=>$value)
{
echo '
';
echo ''.$menuitems[$key]['title'].'';
echo '
';
echo $menuitems[$key]['attributes']['title'];
echo '
';
echo '
';
}
?>
More information on the Drupal menu API for all versions:
http://api.drupal.org/api/group/menu/6
Comment?
I wanted to share my methodology for analyzing access logs coming from a shared hosting environment.
The steps break down like this:
Once you get into it, things can get a bit annoying. When things are annoying, you won’t do them. You need to pay attention to security!
Most hosting companies offer you some sort of control panel where you an download your raw webserver logs. In my case it is the ever popular cPanel software.
Navigate to the logs section and click the ‘Raw Access Log’ icon. This will display a list of all your add-on domains. I have about 20 of them – Yikes! Who wants to click each of these links and download them? Not us. Enter Download Them All, the amazing Firefox plugin. Install this plugin and set the download directory to where you would like to store these logs. I used ‘my home’/Documents/hacked/logs/’. For the type of file to download, select archives and start the downloads. They’ll zip along depending on their size and will end up in your log folder. Select them all in your file browser and unzip them. Sort the directory by file type and delete all of the archive files.
The next step is to combine these files somehow so we can look at one file. My first attempt at this I used the linux command cat – which means concatenate.
cat * > bigole.txt
There is a problem with this approach though – all entries are lumped together and it can be hard to tell what domain the logs come from. We’ll fix this with another approach later.
This put all of the files in one file that I could search for some certain files that had been placed on my site. After I found the files I went back in time a bit and discovered how the files had been placed.
Bingo! The file was named setting.php and was a uploaded through a CMS software. This .php file was a hacker ‘shell’ and let some little shit browse around and hide phishing site urls in my domains. So I needed to track these files down and get rid of them.
Find file ‘setting.php’ in public_html
find public_html -name 'setting.php'
Find files created in the last 11 days
find . -mtime -11 -ls
So all of this worked out O.K. , but a few minutes later I remember something we’d been using at my day job – splunk. Splunk will index your log files and make them searchable through a web interface. Works on Mac, Windows and Linux.
So I followed the same procedure but stopped at the cat command. I installed splunk and configured the inputs to look at my log directory. Splunk sucked all the files into it’s internal database and showed a timeline with a simple search box above it.
I typed in ‘setting.php’ and searched. I see a list of entries that matched. I then clicked on the IP address that had been accessing setting.php. It then added that IP to my search terms. Deleting setting.php from the search bar let me see all activity associated with that IP across all domains.
At the bottom of each log entry you can see what file it was pulled from. The file names identify the domain, so I could tie the entry back to the domain – solving the one problem I ran into.
Using these rudimentary functions of splunk I was able to get a much better idea of the activity happening on my sites – ALL MY SITES! You can create reports using splunk, letting you dig deeper into your sites usage than traditional web trending software. You can also save searches, schedule searches and have actions take place if results are returned. This thing is great!
My next step is to figure out how to get these logs shipped to me automatically or install splunk on my server.
Comment?Ubercart is a popular module for Drupal eCommerce. I setup a system recently. It works well out of the box. The majority of the work you will put in will be payments and shipping quotes. I’ll dig into how to get going here.
Here are links to info on signing up:
http://www.usps.com/webtools/
http://www.ups.com/e_comm_access/toolintro?loc=en_US
Get access to SSH into your hosting provider if you don’t already. Optionally, ask your hosting provider to enable cron and wget for you. Cron will let you schedule a PHP page to be run at your desired times. wget will let you download files directly to your server and then unzip them. Sometimes you can schedule cron from your hosting control panel.
Go to your hosting control panel and create a mySQL database and a user for that database. You can usually do this in your ‘control panel’ in your hosting software.
The user must have these permissions:
Write down your user name, password and database name. Be wary that some hosting services will prepend your user and database with different characters – perhaps your username. Also your host name for your database may not be localhost, which is the default for drupal in the ‘advanced’ part of the setup page. I know that GoDaddy will give you a numbered server to connect to. This info is presented to you at the end of the web control panels I have used that have a mySQL database creation wizard.
If you have wget installed in your ssh shell you can run these commands(otherwise use ftp):
// these are comments
// change directory to your home directory
cd ~
// make a new directory called drupal
mkdir drupal
// change to that directory
cd drupal
// download ubercart to that directory
wget <a href="http://install.ubercart.org/files/install.ubercart.org/uberinstaller/ubercart_deluxe.tar.gz">http:
//install.ubercart.org/files/install.ubercart.org/uberinstaller/ubercart_deluxe.tar.gz</a>
// unzip the file
tar xzf ubercart_deluxe.tar.gz
// view your unzipped file
ls -la
// copy deluxe contents to your public html directory
cp -r ./ubercart_deluxe/* ~/public_html/
// If you're new to the command line...
// . (dot) stands for your current directory. ~ represents your home directory.
Both can be configured in ubercart to direct to a testing server. USPS requires that you contact them to gain access to their production site. Their test site did not work for me – I have yet to get the production working, but haven’t tried, UPS has been the priority.
Putting audio on your site seems like it should be easy. It is, once you know what to do.