Wednesday, February 1, 2012

Utility to check broken links on a website

Today I brushed off some old tech and downloaded a tool I’d used many years ago (I may even have blogged this before!) to check if the Intranet had any broken links.  That tool was called XENU (http://home.snafu.de/tilman/xenulink.html)
Download it from the website (http://home.snafu.de/tilman/xenulink.html#Download)
Extract the ZIP file and Run the install.exe
Installation

Click Next
Click “I Agree”
Click Next
Select the destination directory and click Next
Click Install

Click Next
Click Finish.
Running a link check
Start the application from the Start menu / Xenu Link Slewth / Xenu
From the menu screen click the “Check URL” button on the far left of the tool bar

In the dialogue box enter the URL you want to check, e.g. https://intranet.mydomain.com.au and uncheck the “Check external links” option, unless you want to check those sites.
Click OK.
Results are shown in a list where each link is tested to make sure it’s working correctly.

Press <CTRL>B to clear the view of everything except broken links.
Keep your eye on the progress using the status bar.

At the end you will see something like this:

Showing one broken link.

Monday, January 30, 2012

How to fix a Corrupted XER file

From the Oracle Support desk download the PATTLNK_782008_1412-xerFileParserBuilder.xls file.  It’s also available on the drive: \\ap-fs-02\data\EPF\BSG\Downloads\Primavera\Fix XER files.  Copy the Excel sheet to your local machine.
Open the Spread sheet
Enable all content
Click “Load XER file…”
If you get an error message; the reason is that you are missing the “Comdlg32.ocx” file on your machine.  Copy the file \\ap-fs-02\data\EPF\BSG\Downloads\Primavera\Fix XER files\Comdlg32.ocx file to your C:\Windows\System32 directory and try again.
Select the file you want to check and click OK, the Spread sheet with populate with all the information you need.  This can take a long time depending on the size of the export.

On the front page click the “Diagnostics” button.
On the dialogue select “cross check FK”; Task and task_id; TASKRSRC and task_id.

Click “Run Diagnostic”

You will then be shown all the “Task Resources” which have been assigned to “Tasks” that no longer exist.
Note the Row number in the results.

Go to the TASKRSRC tab and remove these rows from the Spread sheet.. Feel free to run the Diagnostics a few times to make sure you have everything covered.

Eventually you should see that no errors are displayed.
Go back to the front page and click the “Build XER File…” button.
Save the fixed XER file to another file and try the Import again.

Tuesday, November 29, 2011

Connecting to a local Team Foundation Server

Here are details of how to connect to TFS for all your Source Control needs within VS2010/2008.
  1. Open Visual Studio
  2. From the “Team” menu select “Connect to Team Foundation Server..”
  3. Click “Servers”
  4. Click “Add”
  5. Enter the URL for the server e.g. “:8080/tfs">http://<server>:8080/tfs” in the Name field and Click “OK” and Click “Close”.

     6. Select the projects you want to have access too and click “Connect”.

    7. Select “Team Explorer” from the bottom right; Then click the “Source Control Node”; Then “Not Mapped” and Finally enter a local directory on which you will store the code.
    8.  Click “Map” and “Yes” if you are prompted to to a Get.

Thursday, November 3, 2011

Customising CSV export in Business Objects

Classic thing today, something that should be very, very simple turned out to be a total pain.  Using the Business Objects fat client you can choose any CSV export parameter you wish to use, however on the InfoView interface these options a read-only!  This is really silly as the engine to generate the reports is exactly the same. 

To get around the problem required a bit of hacking on the underlying InfoView scripts.  this is probably not support by Business Objects, but it was a fairly simple change.

All that is needed is to edit two files (why two? well I’ve no idea, but figured it was safer to do both): \scripts\CSVoptions.js and \html\CSVOptionsDialogue.html which are located in the “C:\Program Files (x86)\Business Objects\BusinessObjects Enterprise 12.0\java\server\work\APAPPBO01.WebApplicationContainerServer\businessobjects\AnalyticalReporting\12\AnalyticalReporting-12.war\viewers\cdz_adv\language\en” folder.

The code change is simple;

arr=separators.split(' ');

becomes

arr=(separators+' |').split(' ');

Note: You’ll need to reboot the server as TomCat will not register the change.. weird…

Tuesday, July 26, 2011

Business Objects – the basics

Here is some basic information relating to Business Objects which you may find useful..

Setting Up the Server

  • Go to the installer directory
  • Run the "Setup.exe"
  • Note: you’ll need the product code
  • Take all the default settings.

Web Services Available

When installed Business Objects provides 2 main services over the web.
  1. InfoView (:6405/InfoViewApp/logon.jsp">http://<server>:6405/InfoViewApp/logon.jsp); this is the main interface for Users within the Organisation
  2. Central Management Console (:6405/CmcApp/logon.faces">http://<server>:6405/CmcApp/logon.faces) ; this is the administration and control interface for Power Users and Support staff.

Creating and Managing Users

Access the Central Management Console (:6405/CmcApp/logon.faces">http://<server>:6405/CmcApp/logon.faces and click on the User/Group Tab or select "Users and Groups" from the option drop down at the top of the page.

You can create a new User or Group by clicking on the "User List" node and selecting the "New User" icon or "New Group" icon on the menu.

Equally you can edit User/Group details by clicking on the name on the right of the screen.

After you have modified the details you should click "Save" on the bottom right of the screen.

Wednesday, February 2, 2011

Encrypting Web.Config part 2

Someone noted that my previous script for encrypting web.config files was missing out some applications and I discovered it was because they where at the root level and my script expected everything to running under a virtual directory.  This was correct for the development machines but on a production machine the site could be anywhere.

Working by file

To fix this I changed the script to simply find all the web.configs on a specific drive and do it that way.  It turned out to be easier than going via IIS and probably more accurate too.  There modified script is below:

$Dir = get-childitem G:\ -recurse
$List = $Dir | where {$_.name -eq "web.config"}

## Sections we want Hashed ###
$configSections = @('connectionStrings','appSettings')
## Command line for the encrypting system ###
$CmdLine = "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pef "

foreach($file in $List)
{
    ### Process the directories ###
    write-Host "processing  -> " $file.fullname;
    foreach($section in $configSections)
    {
        $command = $CmdLine + $section + " " + $file.fullname + "' -prov 'RsaProtectedConfigurationProvider'";
        #invoke-expression -command $command | out-null
    }

}

Tuesday, February 1, 2011

Encrypting Web.Config

Today I spent a few hours getting a script together that would encrypt all the web.config files for all the sites and applications on a server.   It was more difficult than expected, but I think that’s more because I don’t really know PowerShell as well as I figured.  It was also the fact that our servers are running version 1 rather than version 2 which makes things a little more complicated.

The Script

The script is given below (not much sot show for 4 hours work!). 

### Powershell script to encrypt all web.configs###
$objSites = [adsi]"IIS://localhost/W3SVC"
foreach ($objChild in $objSites.psBase.children)
{
    $sitePath=$objChild.psBase.Path + "/Root";
    Write-Host "Processing Site:" + $sitePath;
    $iis=[adsi]$sitePath;
    $vroot = $iis.psbase.children ;
    trap  { continue;}

    ## Sections we want Hashed ###
    $configSections = @('connectionStrings','appSettings')
    ## Command line for the encrypting system ###
    $CmdLine = "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pe "
    ### Process the directories ###
    foreach($vdir in $vroot)
    {   
        Write-Host "processing  -> " $vdir.psBase.Name;
        foreach($section in $configSections)
        {
            $command = $CmdLine + $section + " -app '/" + $vdir.psBase.Name + "' -prov 'RsaProtectedConfigurationProvider'";
            invoke-expression -command $command | out-null
        }
    }
}

In essence its a simple loop, find all teh defined sites, then all the virtual directories below these.  Run teh command line utility “aspnet-regiis –pe ”, which will work it’s magic.

Powershell

One of the major things you need to have on teh server for this work is PowerShell.  This feature is built into Windows 2008 so all you need to do is enable it by adding the “Microsoft Powershell” feature.  For Windows 2003 you’ll need to download the installation package from Microsoft.

If you’ve installed PowerShell for teh first time tehn you’ll also need to set th Execution Policy.  Just enter “Powershell” at the command prompet and enter “Set-ExecutionPolicy RemoteSigned”, then exit.

 

The Timer Job

The simplest way of making sure that this is always applied to all sites is to create a timer job that runs every hour.