<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: remote code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Fri, 16 May 2008 21:09:43 GMT</pubDate>
    <description>DZone Snippets: remote code</description>
    <item>
      <title>Get uptime of remote computer using WMI</title>
      <link>http://snippets.dzone.com/posts/show/5472</link>
      <description>// description of your code here&lt;br /&gt;Get uptime of remote computer using WMI, I'm not sure the convert time function is correct, it gives different results than psinfo.exe&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;Private Function GetUptime() As String&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        Dim WMIScope As Management.ManagementScope&lt;br /&gt;        Dim WMIConnectionOptions As New Management.ConnectionOptions&lt;br /&gt;        Dim strRootDomain As String&lt;br /&gt;        Dim objRootLDAP As DirectoryEntry&lt;br /&gt;        Dim query As ManagementObjectSearcher&lt;br /&gt;        Dim queryCollection As ManagementObjectCollection&lt;br /&gt;        Dim oq As New System.Management.ObjectQuery&lt;br /&gt;        Dim mo As New ManagementObject&lt;br /&gt;        Dim perftimestamp As String = ""&lt;br /&gt;        Dim perttimefreq As String = ""&lt;br /&gt;        Dim counter As String = ""&lt;br /&gt;        Dim iUptimeInSec As Long = 0&lt;br /&gt;&lt;br /&gt;        With WMIConnectionOptions&lt;br /&gt;            .Impersonation = System.Management.ImpersonationLevel.Impersonate&lt;br /&gt;            .Authentication = System.Management.AuthenticationLevel.Packet&lt;br /&gt;&lt;br /&gt;        End With&lt;br /&gt;&lt;br /&gt;        WMIScope = New Management.ManagementScope("\\" &amp; _&lt;br /&gt;        Strcomputer &amp; "\root\cimv2", WMIConnectionOptions)&lt;br /&gt;&lt;br /&gt;        objRootLDAP = New DirectoryEntry("LDAP://RootDSE")&lt;br /&gt;        strRootDomain = objRootLDAP.Properties.Item("rootDomainNamingContext").Value.ToString&lt;br /&gt;&lt;br /&gt;        oq = New System.Management.ObjectQuery("select * from Win32_PerfRawData_PerfOS_System")&lt;br /&gt;        query = New ManagementObjectSearcher(WMIScope, oq)&lt;br /&gt;        queryCollection = query.Get()&lt;br /&gt;&lt;br /&gt;        For Each oReturn As ManagementObject In queryCollection&lt;br /&gt;            perftimestamp = oReturn("Timestamp_Object").ToString()&lt;br /&gt;            perttimefreq = oReturn("Frequency_Object").ToString()&lt;br /&gt;            counter = oReturn("SystemUpTime").ToString()&lt;br /&gt;        Next&lt;br /&gt;&lt;br /&gt;        ' Calculation in seconds:&lt;br /&gt;        iUptimeInSec = Convert.ToInt64((Double.Parse(perftimestamp) - Double.Parse(counter)) / Double.Parse(perttimefreq))&lt;br /&gt;&lt;br /&gt;        ' convert the seconds&lt;br /&gt;        Return ConvertTime(iUptimeInSec)&lt;br /&gt;&lt;br /&gt;    End Function&lt;br /&gt;&lt;br /&gt;    Private Function ConvertTime(ByVal seconds As Long) As String&lt;br /&gt;&lt;br /&gt;        Dim ConvSec As Long&lt;br /&gt;        Dim ConvMin As Long&lt;br /&gt;        Dim ConvHour As Long&lt;br /&gt;        Dim ConvDays As Long&lt;br /&gt;&lt;br /&gt;        Math.DivRem(seconds, 60, ConvSec)&lt;br /&gt;&lt;br /&gt;        Math.DivRem(seconds, 3600, ConvMin)&lt;br /&gt;        ConvMin = ConvMin / 60&lt;br /&gt;&lt;br /&gt;        Math.DivRem(seconds, (3600 * 24), ConvHour)&lt;br /&gt;        ConvHour = ConvHour / 3600&lt;br /&gt;&lt;br /&gt;        ConvDays = (seconds / (3600 * 24))&lt;br /&gt;&lt;br /&gt;        Return (ConvDays.ToString() + " days " + ConvHour.ToString() + " hours " + ConvMin.ToString() + " minutes " + ConvSec.ToString() + " seconds ")&lt;br /&gt;&lt;br /&gt;    End Function&lt;br /&gt;&lt;br /&gt;'or you could try this method which still doesn't match psinfo or systeminfo but it is closer&lt;br /&gt;&lt;br /&gt;Private Function GetUptime2() As String&lt;br /&gt;&lt;br /&gt;        Dim WMIScope As Management.ManagementScope&lt;br /&gt;        Dim WMIConnectionOptions As New Management.ConnectionOptions&lt;br /&gt;        Dim strRootDomain As String&lt;br /&gt;        Dim objRootLDAP As DirectoryEntry&lt;br /&gt;        Dim query As ManagementObjectSearcher&lt;br /&gt;        Dim queryCollection As ManagementObjectCollection&lt;br /&gt;        Dim oq As New System.Management.ObjectQuery&lt;br /&gt;        Dim mo As New ManagementObject&lt;br /&gt;        Dim perftimestamp As String = ""&lt;br /&gt;        Dim perttimefreq As String = ""&lt;br /&gt;        Dim counter As String = ""&lt;br /&gt;        Dim iUptimeInSec As Long = 0&lt;br /&gt;        Dim LastBootUpTime As DateTime&lt;br /&gt;        Dim dateNow As DateTime = Date.Now&lt;br /&gt;&lt;br /&gt;        With WMIConnectionOptions&lt;br /&gt;            .Impersonation = System.Management.ImpersonationLevel.Impersonate&lt;br /&gt;            .Authentication = System.Management.AuthenticationLevel.Packet&lt;br /&gt;&lt;br /&gt;        End With&lt;br /&gt;&lt;br /&gt;        WMIScope = New Management.ManagementScope("\\" &amp; _&lt;br /&gt;        Strcomputer &amp; "\root\cimv2", WMIConnectionOptions)&lt;br /&gt;&lt;br /&gt;        objRootLDAP = New DirectoryEntry("LDAP://RootDSE")&lt;br /&gt;        strRootDomain = objRootLDAP.Properties.Item("rootDomainNamingContext").Value.ToString&lt;br /&gt;&lt;br /&gt;        oq = New System.Management.ObjectQuery("Select * from Win32_OperatingSystem")&lt;br /&gt;&lt;br /&gt;        query = New ManagementObjectSearcher(WMIScope, oq)&lt;br /&gt;        queryCollection = query.Get()&lt;br /&gt;&lt;br /&gt;        For Each oReturn As ManagementObject In queryCollection&lt;br /&gt;&lt;br /&gt;            LastBootUpTime = System.Management.ManagementDateTimeConverter.ToDateTime(oReturn("LastBootUpTime").ToString)&lt;br /&gt;            &lt;br /&gt;        Next&lt;br /&gt;&lt;br /&gt;        Dim ts As TimeSpan = dateNow.Subtract(LastBootUpTime)&lt;br /&gt;        Console.WriteLine(ts.Days.ToString + " days " + ts.Hours.ToString + " hours " + ts.Minutes.ToString + " minutes " + ts.Seconds.ToString + " seconds ")&lt;br /&gt;&lt;br /&gt;    End Function&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 07 May 2008 15:20:08 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5472</guid>
      <author>mellerbeck (Michael Ellerbeck)</author>
    </item>
    <item>
      <title>Get the username of the logged on user on remote machine</title>
      <link>http://snippets.dzone.com/posts/show/5465</link>
      <description>// description of your code here&lt;br /&gt;Cheats a little by getting the owner of explorer.exe to derive the logged in user. Add reference to System.Management and I think DirectoryServices&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Imports System.Management&lt;br /&gt;Imports System.DirectoryServices&lt;br /&gt;Imports Microsoft.Win32&lt;br /&gt;Imports System.Runtime.InteropServices&lt;br /&gt;Module Module1&lt;br /&gt;    Dim objManagementClass As ManagementClass&lt;br /&gt;    Dim objManagementScope As ManagementScope&lt;br /&gt;    Dim objManagementBaseObject As ManagementBaseObject&lt;br /&gt;    Sub Main()&lt;br /&gt;&lt;br /&gt;        Dim WMIScope As Management.ManagementScope&lt;br /&gt;        Dim WMIConnectionOptions As New Management.ConnectionOptions&lt;br /&gt;        Dim strRootDomain As String&lt;br /&gt;        Dim objRootLDAP As DirectoryEntry&lt;br /&gt;        Dim query As ManagementObjectSearcher&lt;br /&gt;        Dim queryCollection As ManagementObjectCollection&lt;br /&gt;        Dim oq As New System.Management.ObjectQuery&lt;br /&gt;        Dim mo As New ManagementObject&lt;br /&gt;        Dim UserDomain As String&lt;br /&gt;        Dim UserID As String&lt;br /&gt;        Dim StrLoggedUserSID() As Byte&lt;br /&gt;&lt;br /&gt;        Dim Strcomputer As String = My.Application.CommandLineArgs.Item(0)&lt;br /&gt;        'Console.WriteLine(Strcomputer)&lt;br /&gt;&lt;br /&gt;        With WMIConnectionOptions&lt;br /&gt;            .Impersonation = System.Management.ImpersonationLevel.Impersonate&lt;br /&gt;            .Authentication = System.Management.AuthenticationLevel.Packet&lt;br /&gt;&lt;br /&gt;        End With&lt;br /&gt;&lt;br /&gt;        WMIScope = New Management.ManagementScope("\\" &amp; _&lt;br /&gt;        strcomputer &amp; "\root\cimv2", WMIConnectionOptions)&lt;br /&gt;&lt;br /&gt;        objRootLDAP = New DirectoryEntry("LDAP://RootDSE")&lt;br /&gt;        strRootDomain = objRootLDAP.Properties.Item("rootDomainNamingContext").Value.ToString&lt;br /&gt;&lt;br /&gt;        oq = New System.Management.ObjectQuery("SELECT * from Win32_process Where Name='explorer.exe' and SessionID=0")&lt;br /&gt;        query = New ManagementObjectSearcher(WMIScope, oq)&lt;br /&gt;        queryCollection = query.Get()&lt;br /&gt;&lt;br /&gt;        If queryCollection.Count = 0 Then&lt;br /&gt;            Console.WriteLine("No user logged on")&lt;br /&gt;            Exit Sub&lt;br /&gt;        Else&lt;br /&gt;&lt;br /&gt;            Dim strKeyPath As String = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon"&lt;br /&gt;            objManagementScope = New ManagementScope&lt;br /&gt;            objManagementScope.Path.Server = strcomputer&lt;br /&gt;            objManagementScope.Path.NamespacePath = "root\default"&lt;br /&gt;            objManagementScope.Options.EnablePrivileges = True&lt;br /&gt;            objManagementScope.Options.Impersonation = ImpersonationLevel.Impersonate&lt;br /&gt;            objManagementScope.Connect()&lt;br /&gt;&lt;br /&gt;            objManagementClass = New ManagementClass("stdRegProv")&lt;br /&gt;            objManagementClass.Scope = objManagementScope&lt;br /&gt;            objManagementBaseObject = objManagementClass.GetMethodParameters("EnumValues")&lt;br /&gt;            objManagementBaseObject.SetPropertyValue("hDefKey", CType("&amp;H" &amp; Hex(RegistryHive.LocalMachine), Long))&lt;br /&gt;            objManagementBaseObject.SetPropertyValue("sSubKeyName", strKeyPath)&lt;br /&gt;&lt;br /&gt;            UserDomain = CStr(GetRegValues("DefaultDomainName", strKeyPath, "HKLM"))&lt;br /&gt;            UserID = CStr(GetRegValues("DefaultUserName", strKeyPath, "HKLM"))&lt;br /&gt;&lt;br /&gt;            Console.WriteLine(UserID)&lt;br /&gt;&lt;br /&gt;            'If the SID or the full name is needed sometime in the future the code is below&lt;br /&gt;&lt;br /&gt;            'If UCase(UserDomain) = UCase(strcomputer) Then&lt;br /&gt;            'Console.WriteLine("Logged on user = " &amp; UserDomain &amp; "\" &amp; UserID &amp; " (local user)")&lt;br /&gt;            'Exit Sub&lt;br /&gt;            'End If&lt;br /&gt;&lt;br /&gt;            'Dim LdapBind As String&lt;br /&gt;            'LdapBind = ("LDAP://" &amp; strRootDomain)&lt;br /&gt;&lt;br /&gt;            'Dim deEntry3 As New DirectoryEntry(LdapBind)&lt;br /&gt;            'Dim DSearch As New DirectorySearcher(deEntry3)&lt;br /&gt;&lt;br /&gt;            'With DSearch&lt;br /&gt;            '    .SearchScope = SearchScope.Subtree&lt;br /&gt;            '    .Filter = "(&amp;(objectclass=user)(sAMAccountName=" &amp; UserID &amp; "))"&lt;br /&gt;            '    .PropertiesToLoad.Add("name")&lt;br /&gt;            '    .PropertiesToLoad.Add("sAMAccountName")&lt;br /&gt;            '    .PropertiesToLoad.Add("distinguishedName")&lt;br /&gt;            'End With&lt;br /&gt;&lt;br /&gt;            'Dim sResultSet As SearchResult&lt;br /&gt;&lt;br /&gt;            'For Each sResultSet In DSearch.FindAll()&lt;br /&gt;&lt;br /&gt;            '    If UCase(GetProperty(sResultSet, "sAMAccountName")) = UCase(UserID) Then&lt;br /&gt;&lt;br /&gt;            '        Console.WriteLine("Logged on user = " &amp; GetProperty(sResultSet, "name") &amp; " (as " &amp; _&lt;br /&gt;            '        UserDomain &amp; "\" &amp; UserID &amp; ")")&lt;br /&gt;&lt;br /&gt;            '        Dim deEntry4 As New DirectoryEntry("LDAP://" &amp; GetProperty(sResultSet, "distinguishedName").ToString)&lt;br /&gt;            '        StrLoggedUserSID = CType(deEntry4.Properties("objectSid").Value, Byte())&lt;br /&gt;            '        Console.WriteLine("User's SID = " &amp; ConvertSid(StrLoggedUserSID))&lt;br /&gt;            '    End If&lt;br /&gt;            'Next&lt;br /&gt;&lt;br /&gt;        End If&lt;br /&gt;    End Sub&lt;br /&gt;&lt;br /&gt;    Public Function GetProperty(ByVal srSearchResult As SearchResult, ByVal strPropertyName As String) As String&lt;br /&gt;        If srSearchResult.Properties.Contains(strPropertyName) Then&lt;br /&gt;            Return srSearchResult.Properties(strPropertyName)(0).ToString()&lt;br /&gt;        Else&lt;br /&gt;            Return String.Empty&lt;br /&gt;        End If&lt;br /&gt;    End Function&lt;br /&gt;    Private Function GetRegValues(ByVal regkeyValue As String, ByVal regkey As String, ByVal Hive As String)&lt;br /&gt;&lt;br /&gt;        Select Case Hive&lt;br /&gt;            Case "HKLM"&lt;br /&gt;                Hive = CStr(RegistryHive.LocalMachine)&lt;br /&gt;            Case "HKU"&lt;br /&gt;                Hive = CStr(RegistryHive.Users)&lt;br /&gt;            Case "HKCU"&lt;br /&gt;                Hive = CStr(RegistryHive.CurrentUser)&lt;br /&gt;            Case "HKCR"&lt;br /&gt;                Hive = CStr(RegistryHive.ClassesRoot)&lt;br /&gt;        End Select&lt;br /&gt;&lt;br /&gt;        objManagementBaseObject = objManagementClass.GetMethodParameters("GetStringValue")&lt;br /&gt;        objManagementBaseObject.SetPropertyValue("hDefKey", CType("&amp;H" &amp; Hex(Hive), Long))&lt;br /&gt;        objManagementBaseObject.SetPropertyValue("sSubKeyName", regkey)&lt;br /&gt;        objManagementBaseObject.SetPropertyValue("sValueName", regkeyValue)&lt;br /&gt;        objManagementBaseObject = objManagementClass.InvokeMethod("GetStringValue", objManagementBaseObject, Nothing)&lt;br /&gt;        GetRegValues = objManagementBaseObject("sValue")&lt;br /&gt;&lt;br /&gt;    End Function&lt;br /&gt;&lt;br /&gt;    Public Function ConvertSid(ByVal sid As Byte()) As String&lt;br /&gt;&lt;br /&gt;        Dim sidString As String&lt;br /&gt;        Dim sidPtr As IntPtr&lt;br /&gt;        Dim sidStringPtr As IntPtr&lt;br /&gt;        Dim res As Integer&lt;br /&gt;&lt;br /&gt;        sidPtr = Marshal.AllocHGlobal(sid.Length)&lt;br /&gt;        Marshal.Copy(sid, 0, sidPtr, sid.Length)&lt;br /&gt;        res = ConvertSidToStringSid(sidPtr, sidStringPtr)&lt;br /&gt;        If res = 0 Then&lt;br /&gt;            Throw New System.ComponentModel.Win32Exception(Marshal.GetLastWin32Error())&lt;br /&gt;        End If&lt;br /&gt;        sidString = Marshal.PtrToStringAuto(sidStringPtr)&lt;br /&gt;        Marshal.FreeHGlobal(sidPtr)&lt;br /&gt;        Marshal.FreeHGlobal(sidStringPtr)&lt;br /&gt;&lt;br /&gt;        Return sidString&lt;br /&gt;&lt;br /&gt;    End Function&lt;br /&gt;&lt;br /&gt;    &lt;DllImport("advapi32.dll", CharSet:=CharSet.Auto, SetLastError:=True)&gt; _&lt;br /&gt;    Private Function ConvertSidToStringSid(ByVal pSID As IntPtr, ByRef pSidString As IntPtr) As Integer&lt;br /&gt;    End Function&lt;br /&gt;&lt;br /&gt;End Module&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 05 May 2008 20:43:57 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5465</guid>
      <author>mellerbeck (Michael Ellerbeck)</author>
    </item>
    <item>
      <title>Make a remote URL work like a file upload (in Rails)</title>
      <link>http://snippets.dzone.com/posts/show/3994</link>
      <description>Want to load a remote URL into an acts_as_attachment/attachment_fu model?  Use this little utility class.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;  class UrlUpload&lt;br /&gt;    EXTENSIONS = {&lt;br /&gt;      "image/jpeg" =&gt; ["jpg", "jpeg", "jpe"],&lt;br /&gt;      "image/gif" =&gt; ["gif"],&lt;br /&gt;      "image/png" =&gt; ["png"]&lt;br /&gt;    }&lt;br /&gt;    attr_reader :original_filename, :attachment_data&lt;br /&gt;    def initialize(url)&lt;br /&gt;      @attachment_data = open(url)&lt;br /&gt;      @original_filename = determine_filename&lt;br /&gt;    end&lt;br /&gt;&lt;br /&gt;    # Pass things like size, content_type, path on to the downloaded file&lt;br /&gt;    def method_missing(symbol, *args)&lt;br /&gt;      if self.attachment_data.respond_to? symbol&lt;br /&gt;        self.attachment_data.send symbol, *args&lt;br /&gt;      else&lt;br /&gt;        super&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;    &lt;br /&gt;    private&lt;br /&gt;      def determine_filename&lt;br /&gt;        # Grab the path - even though it could be a script and not an actual file&lt;br /&gt;        path = self.attachment_data.base_uri.path&lt;br /&gt;        # Get the filename from the path, make it lowercase to handle those&lt;br /&gt;        # crazy Win32 servers with all-caps extensions&lt;br /&gt;        filename = File.basename(path).downcase&lt;br /&gt;        # If the file extension doesn't match the content type, add it to the end, changing any existing .'s to _&lt;br /&gt;        filename = [filename.gsub(/\./, "_"), EXTENSIONS[self.content_type].first].join(".") unless EXTENSIONS[self.content_type].any? {|ext| filename.ends_with?("." + ext) }&lt;br /&gt;        # Return the result&lt;br /&gt;        filename&lt;br /&gt;      end&lt;br /&gt;  end&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now when you have the URL you want to load, do something like this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;@model.uploaded_data = UrlUpload.new(url)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Or better yet, make a pseudo-accessor on your aaa/attachment_fu model so you can stay "model-heavy".&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;def url=(value)&lt;br /&gt;  self.uploaded_data = UrlUpload.new(value)&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 11 May 2007 18:04:51 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3994</guid>
      <author>seancribbs (Sean Cribbs)</author>
    </item>
    <item>
      <title>DB2 Federation</title>
      <link>http://snippets.dzone.com/posts/show/3681</link>
      <description>Server A configuration:&lt;br /&gt;OS: WinXP&lt;br /&gt;Instance name: TMINST&lt;br /&gt;Instance user and password: db2admin/db2admin&lt;br /&gt;Required nickname for remote table: DB2ADMIN.R_CUSTOMERS&lt;br /&gt;&lt;br /&gt;Server B configuration:&lt;br /&gt;OS: Linux&lt;br /&gt;IP: 10.60.100.21&lt;br /&gt;DB2 service port: 50000&lt;br /&gt;Instance user and password: db2inst1/db2inst1&lt;br /&gt;Database name: TM_ON&lt;br /&gt;Table name to be linked: CUSTOMERS&lt;br /&gt;&lt;br /&gt;CLP Commands @Server A:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;db2set DB2INSTDEF=TMINST&lt;br /&gt;SET DB2INSTANCE=TMINST&lt;br /&gt;db2 UPDATE DATABASE MANAGER CONFIGURATION USING FEDERATED YES IMMEDIATE&lt;br /&gt;db2 CATALOG TCPIP NODE RTMINST REMOTE 10.60.100.21 SERVER 50000 REMOTE_INSTANCE db2inst1 OSTYPE Linux&lt;br /&gt;db2 CATALOG DATABASE TM_ON AS RTM_ON AT NODE RTMINST &lt;br /&gt;db2start&lt;br /&gt;db2 CONNECT TO TM_ON USER db2admin USING db2admin&lt;br /&gt;db2 CREATE WRAPPER DRDA&lt;br /&gt;db2 "CREATE SERVER RTM_ON TYPE DB2/UDB VERSION '9.1' WRAPPER DRDA AUTHORIZATION \"db2inst1\" PASSWORD \"db2inst1\" OPTIONS( ADD DBNAME 'RTM_ON')"&lt;br /&gt;db2 CREATE USER MAPPING FOR DB2ADMIN SERVER RTM_ON OPTIONS ( ADD REMOTE_AUTHID 'db2inst1', ADD  REMOTE_PASSWORD 'db2inst1') &lt;br /&gt;db2 CREATE NICKNAME DB2ADMIN.R_CUSTOMERS FOR RTM_ON.DB2INST1.CUSTOMERS&lt;br /&gt;db2 SELECT * FROM R_CUSTOMERS&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 16 Mar 2007 11:46:43 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3681</guid>
      <author>wjchay (Chay Weei Jye)</author>
    </item>
    <item>
      <title>HTTPRequest //JavaScript Class</title>
      <link>http://snippets.dzone.com/posts/show/2439</link>
      <description>&lt;a href="http://jsfromhell.com/classes/http-request"&gt;&lt;br /&gt;Class to make remote requests, which can be used on the popular "AJAX".&lt;br /&gt;&lt;br /&gt;[UPDATED CODE AND HELP CAN BE FOUND HERE]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;//+ Jonas Raoni Soares Silva&lt;br /&gt;//@ http://jsfromhell.com/classes/http-request [v1.0]&lt;br /&gt;&lt;br /&gt;HTTPRequest = function(){};&lt;br /&gt;with({$: HTTPRequest.prototype}){&lt;br /&gt;	$.isSupported = function(){&lt;br /&gt;		return !!this.getConnection();&lt;br /&gt;	};&lt;br /&gt;	$.events = ["start", "open", "send", "load", "end"];&lt;br /&gt;	$.filter = encodeURIComponent;&lt;br /&gt;	$.getConnection = function(){&lt;br /&gt;		var i, o = [function(){return new ActiveXObject("Msxml2.XMLHTTP");},&lt;br /&gt;		function(){return new ActiveXObject("Microsoft.XMLHTTP");},&lt;br /&gt;		function(){return new XMLHttpRequest;}];&lt;br /&gt;		for(i = o.length; i--;) try{return o[i]();} catch(e){}&lt;br /&gt;		return null;&lt;br /&gt;	};&lt;br /&gt;	$.formatParams = function(params){&lt;br /&gt;		var i, r = [];&lt;br /&gt;		for(i in params) r[r.length] = i + "=" + (this.filter ? this.filter(params[i]) : params[i]);&lt;br /&gt;		return r.join("&amp;");&lt;br /&gt;	};&lt;br /&gt;	$.get = function(url, params, handler, waitResponse){&lt;br /&gt;		return this.request("GET", url + (url.indexOf("?") + 1 ? "&amp;" : "?") + this.formatParams(params), null, handler, null, waitResponse);&lt;br /&gt;	};&lt;br /&gt;	$.post = function(url, params, handler, waitResponse){&lt;br /&gt;		return this.request("POST", url, params = this.formatParams(params), handler, {&lt;br /&gt;			"Connection": "close",&lt;br /&gt;			"Content-Length": params.length,&lt;br /&gt;			"Method": "POST " + url + " HTTP/1.1",&lt;br /&gt;			"Content-Type": "application/x-www-form-urlencoded; charset=utf-8"&lt;br /&gt;		}, waitResponse);&lt;br /&gt;	};&lt;br /&gt;	$.request = function(method, url, params, handler, headers, waitResponse){&lt;br /&gt;		var i, o = this.getConnection(), f = handler instanceof Function;&lt;br /&gt;		try{&lt;br /&gt;			o.open(method, url, !waitResponse);&lt;br /&gt;			waitResponse || (o.onreadystatechange = function(){&lt;br /&gt;				var s = $.events[o.readyState];&lt;br /&gt;				f ? handler(o) : s in handler &amp;&amp; handler[s](o);&lt;br /&gt;			});&lt;br /&gt;			o.setRequestHeader("HTTP_USER_AGENT", "XMLHttpRequest");&lt;br /&gt;			for(i in headers)&lt;br /&gt;				o.setRequestHeader(i, headers[i]);&lt;br /&gt;			o.send(params);&lt;br /&gt;			waitResponse &amp;&amp; (f ? handler(o) : handler["end"] &amp;&amp; handler["end"](o));&lt;br /&gt;			return true;&lt;br /&gt;		}&lt;br /&gt;		catch(e){&lt;br /&gt;			return false;&lt;br /&gt;		}&lt;br /&gt;	};&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Example&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;fieldset&gt;&lt;br /&gt;	&lt;legend&gt;HTTPRequest example&lt;/legend&gt;&lt;br /&gt;	&lt;input type="button" value="POST request with generic listener and params passage" onclick="genericHandler()" /&gt;&lt;br /&gt;	&lt;br /&gt;&lt;input type="button" value="GET request with specific listener (binded on load and end)" onclick="specificHandler()" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;//&lt;![CDATA[&lt;br /&gt;&lt;br /&gt;var r = new HTTPRequest;&lt;br /&gt;&lt;br /&gt;function myHandler(o){&lt;br /&gt;	alert("Current event = " + r.events[o.readyState] +&lt;br /&gt;	"\nAvailable \"responseText.length\" = " + o.responseText.length);&lt;br /&gt;}&lt;br /&gt;function genericHandler(){&lt;br /&gt;	r.post(location.href, {param: "abcde", name: "Jonas", site: "http://jsfromhell.com"}, myHandler);&lt;br /&gt;}&lt;br /&gt;function specificHandler(){&lt;br /&gt;	r.get(location.href, null, {"load": myHandler, "end": myHandler});&lt;br /&gt;}&lt;br /&gt;document.write(&lt;br /&gt;	"&lt;br /&gt;Supports XMLHTTPRequest = ".bold() + r.isSupported(),&lt;br /&gt;	"&lt;br /&gt;Encoded with the default filter (\"encodeURIComponent\") = ".bold() + r.formatParams({nameA: "aeiou", nameB: "&#225;&#233;&#237;&#243;&#250;"})&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;r.filter = escape;&lt;br /&gt;document.write("&lt;br /&gt;Encoded with \"escape\" filter = ".bold() + r.formatParams({nameA: "aeiou", nameB: "&#225;&#233;&#237;&#243;&#250;"}));&lt;br /&gt;&lt;br /&gt;r.filter = null;&lt;br /&gt;document.write("&lt;br /&gt;Encoded with no filtering = ".bold() + r.formatParams({nameA: "aeiou", nameB: "&#225;&#233;&#237;&#243;&#250;"}));&lt;br /&gt;&lt;br /&gt;//]]&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;/fieldset&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 18 Aug 2006 17:06:08 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2439</guid>
      <author>jonasraoni (Jonas Raoni Soares Silva)</author>
    </item>
    <item>
      <title>Grab HTML From Sites and Echo Results</title>
      <link>http://snippets.dzone.com/posts/show/2245</link>
      <description>Grabs specified tags from any url on the net and then echos each of the results on a seperate line, you then have the option to remove the tags from the echoed results.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;?php&lt;br /&gt;&lt;br /&gt;$config['url']       = "http://www.business-tycoon.com"; // url of html to grab&lt;br /&gt;$config['start_tag'] = "&lt;b&gt;"; // where you want to start grabbing&lt;br /&gt;$config['end_tag']   = "&lt;/b&gt;"; // where you want to stop grabbing&lt;br /&gt;$config['show_tags'] = 0; // do you want the tags to be shown when you show the html? 1 = yes, 0 = no&lt;br /&gt;&lt;br /&gt;class grabber&lt;br /&gt;{&lt;br /&gt;	var $error = '';&lt;br /&gt;	var $html  = '';&lt;br /&gt;	&lt;br /&gt;	function grabhtml( $url, $start, $end )&lt;br /&gt;	{&lt;br /&gt;		$file = file_get_contents( $url );&lt;br /&gt;		&lt;br /&gt;		if( $file )&lt;br /&gt;		{&lt;br /&gt;			if( preg_match_all( "#$start(.*?)$end#s", $file, $match ) )&lt;br /&gt;			{				&lt;br /&gt;				$this-&gt;html = $match;&lt;br /&gt;			}&lt;br /&gt;			else&lt;br /&gt;			{&lt;br /&gt;				$this-&gt;error = "Tags cannot be found.";&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;		else&lt;br /&gt;		{&lt;br /&gt;			$this-&gt;error = "Site cannot be found!";&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	function strip( $html, $show, $start, $end )&lt;br /&gt;	{&lt;br /&gt;		if( !$show )&lt;br /&gt;		{&lt;br /&gt;			$html = str_replace( $start, "", $html );&lt;br /&gt;			$html = str_replace( $end, "", $html );&lt;br /&gt;			&lt;br /&gt;			return $html;&lt;br /&gt;		}&lt;br /&gt;		else&lt;br /&gt;		{&lt;br /&gt;			return $html;&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;$grab = new grabber;&lt;br /&gt;$grab-&gt;grabhtml( $config['url'], $config['start_tag'], $config['end_tag'] );&lt;br /&gt;&lt;br /&gt;echo $grab-&gt;error;&lt;br /&gt;&lt;br /&gt;foreach( $grab-&gt;html[0] as $html )&lt;br /&gt;{&lt;br /&gt;	echo htmlspecialchars( $grab-&gt;strip( $html, $config['show_tags'], $config['start_tag'], $config['end_tag'] ) ) . "&lt;br&gt;";&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;?&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 05 Jul 2006 14:39:21 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2245</guid>
      <author>mrwhale (Paul Janaway)</author>
    </item>
    <item>
      <title>link_to_remote_unless_current</title>
      <link>http://snippets.dzone.com/posts/show/2183</link>
      <description>// Full discussion about this available at:&lt;br /&gt;// http://6brand.com/articles/2006/06/07/link_to_remote_unless_current&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# throw this in one of your controller helpers.&lt;br /&gt;# it works just like a combination of link_to_unless_current and link_to_remote&lt;br /&gt;def link_to_remote_unless_current(name, options = {}, html_options = {}, *parameters_for_method_reference, &amp;block)&lt;br /&gt;  if current_page?(options[:url])&lt;br /&gt;    if block_given?&lt;br /&gt;      block.arity &lt;= 1 ? yield(name) : yield(name, remote_function(options), html_options, *parameters_for_method_reference)&lt;br /&gt;    else&lt;br /&gt;      name&lt;br /&gt;    end&lt;br /&gt;  else&lt;br /&gt;    link_to_function(name, remote_function(options), html_options)&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 14 Jun 2006 09:53:44 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2183</guid>
      <author>danger (Danger)</author>
    </item>
    <item>
      <title>A Client For the XML-RPC Servlet</title>
      <link>http://snippets.dzone.com/posts/show/1636</link>
      <description>// When combined with the Apache XML-RPC library this code&lt;br /&gt;// will let you call the servlet in the snippet "An XML-RPC&lt;br /&gt;// Servlet". Of course, since XML-RPC is pretty ubiquitous&lt;br /&gt;// you can also use this code to call servers in dozens of&lt;br /&gt;// other languages as well.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import java.util.Vector;&lt;br /&gt;&lt;br /&gt;import org.apache.commons.logging.Log;&lt;br /&gt;import org.apache.commons.logging.LogFactory;&lt;br /&gt;import org.apache.xmlrpc.XmlRpcClient;&lt;br /&gt;&lt;br /&gt;public class XMLRPCTestClient {&lt;br /&gt;    private static final String serverAddress = &lt;br /&gt;	"http://localhost:8080/lol/remoteapi";&lt;br /&gt;    private static Log log = LogFactory.getLog(XMLRPCTestClient.class);&lt;br /&gt;    &lt;br /&gt;    /** Creates a new instance of XMLRPCTestClient */&lt;br /&gt;    public XMLRPCTestClient(String address) {&lt;br /&gt;        try {&lt;br /&gt;            XmlRpcClient xmlrpc = new XmlRpcClient(address);&lt;br /&gt;&lt;br /&gt;            Vector params = new Vector();&lt;br /&gt;            params.addElement("Hello World! Hello!");&lt;br /&gt;&lt;br /&gt;            try {&lt;br /&gt;                // this method returns a string&lt;br /&gt;                String result = (String) xmlrpc.execute("echo.echo", params);&lt;br /&gt;                System.out.println(result);&lt;br /&gt;            } catch (Exception e) {&lt;br /&gt;                log.error("The remote procedure call failed.", e);&lt;br /&gt;            }&lt;br /&gt;        } catch (java.net.MalformedURLException mue) {&lt;br /&gt;            log.error(&lt;br /&gt;                "The address given for the XML-RPC interface is bad: " + address);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * @param args the command line arguments&lt;br /&gt;     */&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        XMLRPCTestClient xmlRPCTestClient = new XMLRPCTestClient(&lt;br /&gt;            serverAddress);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 06 Mar 2006 01:50:55 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/1636</guid>
      <author>JohnMunsch (John Munsch)</author>
    </item>
    <item>
      <title>An XML-RPC Servlet</title>
      <link>http://snippets.dzone.com/posts/show/1635</link>
      <description>// This depends upon the Apache XML-RPC library.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.io.OutputStream;&lt;br /&gt;&lt;br /&gt;import javax.servlet.ServletConfig;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.http.HttpServlet;&lt;br /&gt;import javax.servlet.http.HttpServletRequest;&lt;br /&gt;import javax.servlet.http.HttpServletResponse;&lt;br /&gt;&lt;br /&gt;import org.apache.commons.logging.Log;&lt;br /&gt;import org.apache.commons.logging.LogFactory;&lt;br /&gt;import org.apache.xmlrpc.XmlRpcServer;&lt;br /&gt;&lt;br /&gt;public class XmlRpcServlet extends HttpServlet {&lt;br /&gt;    public class EchoHandler {&lt;br /&gt;        public String echo(String input) {&lt;br /&gt;            return input;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;	&lt;br /&gt;    private XmlRpcServer server = new XmlRpcServer();&lt;br /&gt;&lt;br /&gt;    private static Log log = LogFactory.getLog(XmlRpcServlet.class);&lt;br /&gt;&lt;br /&gt;	@Override&lt;br /&gt;	public void init(ServletConfig config) throws ServletException {&lt;br /&gt;        server.addHandler("echo", new EchoHandler());&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	@Override&lt;br /&gt;	protected void doGet(HttpServletRequest request, &lt;br /&gt;			HttpServletResponse response) throws ServletException, IOException {&lt;br /&gt;        doPost(request, response);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	@Override&lt;br /&gt;	protected void doPost(HttpServletRequest request, &lt;br /&gt;			HttpServletResponse response) throws ServletException, IOException {&lt;br /&gt;        byte[] result = server.execute(request.getInputStream());&lt;br /&gt;        &lt;br /&gt;        response.setContentType("text/xml");&lt;br /&gt;        response.setContentLength(result.length);&lt;br /&gt;        &lt;br /&gt;        OutputStream output = response.getOutputStream();&lt;br /&gt;        output.write(result);&lt;br /&gt;        output.flush();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;// The following needs to be added to your web.xml file to&lt;br /&gt;// expose the servlet so it may be called remotely.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;  &lt;servlet&gt;&lt;br /&gt;    &lt;servlet-name&gt;XmlRpcServlet&lt;/servlet-name&gt;&lt;br /&gt;    &lt;servlet-class&gt;XmlRpcServlet&lt;/servlet-class&gt;&lt;br /&gt;  &lt;/servlet&gt;&lt;br /&gt;&lt;br /&gt;  &lt;servlet-mapping&gt;&lt;br /&gt;    &lt;servlet-name&gt;XmlRpcServlet&lt;/servlet-name&gt;&lt;br /&gt;    &lt;url-pattern&gt;/remoteapi&lt;/url-pattern&gt;        &lt;br /&gt;  &lt;/servlet-mapping&gt;    &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;</description>
      <pubDate>Mon, 06 Mar 2006 01:47:26 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/1635</guid>
      <author>JohnMunsch (John Munsch)</author>
    </item>
    <item>
      <title>ssh remote backups</title>
      <link>http://snippets.dzone.com/posts/show/1337</link>
      <description>// http://www.linux.com/article.pl?sid=06/01/12/1937210&lt;br /&gt;//  Backup with remote compression and storage&lt;br /&gt;&lt;br /&gt;// When compression is necessary (and feasible), workload&lt;br /&gt;// distribution becomes more effective with OpenSSH. Just as // distcc allows multiple machines to compile&lt;br /&gt;// simultaneously, OpenSSH lets one system create the&lt;br /&gt;// archive, while another system compresses it:&lt;br /&gt;&lt;br /&gt;// tar cf - dirname | ssh remotehost "gzip -c &gt;&lt;br /&gt;// ${TMPFILE}.tar.gz" &lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;tar cf - local-dir-eliotwalker | ssh -l mctt remote-glos.corruptive.co.uk "gzip -c &gt; corr.tar.gz"&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 01 Feb 2006 22:57:00 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/1337</guid>
      <author>mctt (mctt)</author>
    </item>
  </channel>
</rss>
