Type=Service Version=2.52 @EndOfDesignText@ #Region Service Attributes #StartAtBoot: False #End Region Sub Process_Globals Private myPublicIp As String Private timer1 As Timer Private intervalMinutes As Int = 30 Type NoIpValues(Host As String, Username As String, Password As String) Private ni As NoIpValues Private settingsFile As String = "dynamicip.txt" End Sub Sub Service_Create timer1.Initialize("timer1", 60000 * intervalMinutes) If File.Exists(File.DirInternal, settingsFile) Then myPublicIp = File.ReadString(File.DirInternal, settingsFile) End If End Sub Sub Service_Start (StartingIntent As Intent) End Sub Public Sub Start(Values As NoIpValues) ni = Values timer1.Enabled = True Timer1_Tick End Sub Sub Timer1_Tick Dim job As HttpJob job.Initialize("exip", Me) job.Download("http://api.exip.org/?call=ip") End Sub Sub JobDone(Job As HttpJob) If Job.Success = False Then Log("Error: (" & Job.JobName & ") " & Job.ErrorMessage) Else Select Job.JobName Case "exip" Dim ip As String = job.GetString If ip <> myPublicIp Then myPublicIp = ip File.WriteString(File.DirInternal, settingsFile, myPublicIp) SendNoIpUpdateRequest End If Case "no-ip" If Job.GetString.StartsWith("good") = False Then Log("Error updating No-IP: " & Job.GetString) Else Log("Ip updated correctly: " & Job.GetString) End If End Select End If Job.Release End Sub Sub SendNoIpUpdateRequest Dim j As HttpJob j.Initialize("no-ip", Me) j.Download2("http://dynupdate.no-ip.com/nic/update", Array As String("hostname", _ ni.Host)) Dim su As StringUtils Dim usernameAndPassword As String = ni.Username & ":" & ni.Password j.GetRequest.SetHeader("Authorization", "Basic " & su.EncodeBase64(usernameAndPassword.GetBytes("UTF8"))) j.GetRequest.SetHeader("User-Agent", "Basic4android client/1.0 " & ni.Username) End Sub Sub Service_Destroy End Sub