wo kriegt ihr nur die Glaskugeln her.
Der Ganze Code wäre wohl zu umfangreich, aber das sind wohl die wichtigen Stellen
Code: Alles auswählen
UseJPEGImageDecoder()
;{- Enumerations / DataSections
;{ Windows
Enumeration
#Window_0
#Window_1
EndEnumeration
;}
;{ Gadgets
Enumeration
#IPAddress_0
#Text_1
#Button_1
#Button_2
#Button_3
#Button_4
#String_1
#Editor_1
#Editor_2
#Editor_3
#Editor_11
#Gadget
#Text_2
#Text_3
#Text_4
#Text_5
#Check_1
EndEnumeration
DataSection
UdhcpdStart :
IncludeBinary "c:\HF_Helper\udhcpd.orig"
UdhcpdEnd :
SmbStart :
IncludeBinary "c:\HF_Helper\smb.conf"
SmbEnd :
EndDataSection
Global IniFile.s = ""
Global IP_Adr.s = ""
Global Log = 0
Global Login.s = "root"
Global Passwort.s = "root"
Global Ziel.s
Global Ser_Nr.s = ""
Global Install.s = "Installieren"
Global Deinstall.s = "Deinstallieren"
Global Funktion.s = ""
Global Dim Telnet_Befehl.s(5)
Global Dim Telnet_Ergebnis.s(5)
Global IM
Global Befehle.l
Global dt =100
;}
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
;}
Procedure OpenWindow_Window_0()
If OpenWindow(#Window_0, 1, 1, 500, 500, "Hifidelio Helper", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MinimizeGadget | #PB_Window_TitleBar)
; hier beginnt das Erstellen des Menüs...
If CreateMenu(0, WindowID(0))
MenuTitle("Funktion")
MenuItem(1, "Internetradio Patch")
MenuItem(2, "Musikordner freigeben")
MenuBar()
; hier wird der Abgrenzungsbalken eingefügt
MenuItem(99, "Beenden")
MenuTitle("Admin Funktionen")
MenuItem(101, "Update auf Pro")
MenuItem(102, "IPAdressen zurücksetzen")
MenuItem(103, "Musik retten")
EndIf
If CreateGadgetList(WindowID(#Window_0))
;immer Sichtbar
IPAddressGadget(#IPAddress_0, 280, 10, 205, 25)
TextGadget(#Text_1, 225, 13, 54, 14, "IP Adresse")
ButtonGadget(#Button_1, 15, 5, 70, 30, "Verbinden")
CheckBoxGadget(#Check_1, 5, 465, 90, 14, "Debugfenster")
TextGadget(#Text_3, 390, 465, 70, 14, "Seriennummer")
TextGadget(#Text_4, 460, 465, 35, 15, "", #PB_Text_Border)
TextGadget(#Text_2, 102, 13, 54, 14, "Passwort")
StringGadget(#String_1, 150, 10, 61, 20, "root")
;Textfeld oben
EditorGadget(#Editor_1, 15, 40, 380, 100, #PB_Editor_ReadOnly)
HideGadget(#Editor_1, 1)
;Schalter oben
ButtonGadget(#Button_2, 410, 75, 70, 30, "Oben")
HideGadget(#Button_2, 1)
;Textfeld unten
EditorGadget(#Editor_2, 15, 160, 380, 100, #PB_Editor_ReadOnly)
HideGadget(#Editor_2, 1)
;Schalter unten
ButtonGadget(#Button_3, 410, 195, 70, 30, "Unten")
HideGadget(#Button_3, 1)
;Schalter ausführen
ButtonGadget(#Button_4, 200, 440, 100, 30, "Installieren")
HideGadget(#Button_4, 1)
;Editorfeld
EditorGadget(#Editor_3, 15, 40, 470, 385)
HideGadget(#Editor_3, 1)
LoadImage(0, "c:\hf_helper\hf_Offline.jpg")
ResizeImage(0, 350,233,#PB_Image_Smooth)
LoadImage(1, "c:\hf_helper\hf_Online.jpg")
ResizeImage(1, 350,233,#PB_Image_Smooth)
ImageGadget(#Gadget, 75, 100, 350, 300, ImageID(0))
EndIf
EndIf
EndProcedure
Procedure OpenWindow_Window_1()
If OpenWindow(#Window_1,520, 1, 450, 500, "Hifidelio Debug", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MinimizeGadget | #PB_Window_TitleBar)
If CreateGadgetList(WindowID(#Window_1))
;Editorfeld
EditorGadget(#Editor_11, 15, 15, 420, 470)
HideGadget(#Editor_11, 0)
EndIf
EndIf
EndProcedure
Procedure Programmstart()
;Einstellungen laden-------------------------------------------------------------------------------
IniFile.s = GetPathPart(ProgramFilename()) + "\HF_Helper.ini"
If OpenPreferences(IniFile.s)
PreferenceGroup("Global")
IP_Adr.s = ReadPreferenceString("IP_Adr", "192.168.178.001")
Passwort.s = ReadPreferenceString("Passwort", "root")
ClosePreferences()
Else
IP_Adr.s = "192.168.178.001"
CreatePreferences(IniFile.s)
PreferenceGroup("Global")
WritePreferenceString("IP_Adr", IP_Adr.s)
WritePreferenceString("Passwort", Passwort.s)
ClosePreferences()
EndIf
SetGadgetState(#IPAddress_0, MakeIPAddress(Val(StringField(IP_Adr, 1, ".")), Val(StringField(IP_Adr, 2, ".")), Val(StringField(IP_Adr, 3, ".")), Val(StringField(IP_Adr, 4, "."))))
SetGadgetText(#String_1, Passwort.s)
EndProcedure
Procedure Programmende()
CreatePreferences(IniFile.s)
PreferenceGroup("Global")
WritePreferenceString("IP_Adr", GetGadgetText(#IPAddress_0))
WritePreferenceString("Passwort", GetGadgetText(#String_1))
ClosePreferences()
End
EndProcedure
Procedure Windowclean()
HideGadget(#Button_2, 1)
HideGadget(#Button_3, 1)
HideGadget(#Button_4, 1)
HideGadget(#Editor_1, 1)
HideGadget(#Editor_2, 1)
HideGadget(#Editor_3, 1)
EndProcedure
Procedure Telnet()
DatenBuffer.s = Space(100)
ConID = OpenNetworkConnection(IP_Adr.s, 23)
If ConID
;Erste Sequenz vom Server prüfen und beantworten
ReceiveNetworkData(ConID, @DatenBuffer, Len(DatenBuffer))
Soll.s = Chr(255) + Chr(253) + Chr(24) + Chr(255) + Chr(253) + Chr(32) + Chr(255) + Chr(253) + Chr(35) + Chr(255) + Chr(253) + Chr(39)
If Log = 1
AddGadgetItem(#Editor_11, -1 , "Erwartet= " + Soll.s)
AddGadgetItem(#Editor_11, -1 , "Erhalten= " + Mid(DatenBuffer, 0, 12))
EndIf
If Mid(DatenBuffer, 0, 12) = Soll
An.s = Chr(255) + Chr(252) + Chr(24) + Chr(255) + Chr(252) + Chr(32) + Chr(255) + Chr(252) + Chr(35) + Chr(255) + Chr(252) + Chr(39) ;+Chr(13)+Chr(10)
If Log = 1
AddGadgetItem(#Editor_11, -1 , "Sende= " + An.s)
EndIf
If SendNetworkData(ConID, @An, 12) = - 1
MessageRequester("Error", "Server akzeptiert Antwort nicht.!", 0)
EndIf
Else
MessageRequester("Error", "Serversequenz unbekannt!", 0)
EndIf
Delay(dt)
;Zweite Sequenz vom Server prüfen und beantworten
DatenBuffer.s = Space(100)
ReceiveNetworkData(ConID, @DatenBuffer, Len(DatenBuffer))
Soll.s = Chr(255) + Chr(251) + Chr(3) + Chr(255) + Chr(253) + Chr(1) + Chr(255) + Chr(253) + Chr(31) + Chr(255) + Chr(251) + Chr(5) + Chr(255) + Chr(253) + Chr(33)
If Log = 1
AddGadgetItem(#Editor_11, -1 , "Erwartet= " + Soll.s)
AddGadgetItem(#Editor_11, -1 , "Erhalten= " + Mid(DatenBuffer, 0, 15))
EndIf
If Mid(DatenBuffer, 0, 15) = Soll
An.s = Chr(255) + Chr(252) + Chr(1) + Chr(255) + Chr(252) + Chr(31) + Chr(255) + Chr(252) + Chr(33) ;+Chr(255)+Chr(252)+Chr(39);+Chr(13)+Chr(10)
If Log = 1
AddGadgetItem(#Editor_11, -1 , "Sende= " + An.s)
EndIf
If SendNetworkData(ConID, @An, 9) = - 1
MessageRequester("Error", "Server akzeptiert Antwort nicht.!", 0)
EndIf
Else
MessageRequester("Error", "Serversequenz unbekannt!", 0)
EndIf
Delay(dt)
;Dritte Sequenz vom Server Login-------------------------------------------------------------------
Text.s = ""
Repeat
DatenBuffer.s = Space(100)
V = ReceiveNetworkData(ConID, @DatenBuffer, Len(DatenBuffer))
Text.s = Text.s +(Trim(RemoveString(DatenBuffer, Chr(13) + Chr(10))))
If Right(Text.s, 6) = "login:"
V = - 1
EndIf
Until V = - 1
If Log = 1
AddGadgetItem(#Editor_11, -1 , "L1_Erhalten= " + Mid(Text.s, 0, Len(Text.s) - 6))
AddGadgetItem(#Editor_11, -1 , "L2_Erhalten= " + Right(Text.s, 6))
EndIf
An.s = Chr(255) + Chr(253) + Chr(1) + Login.s + Chr(13) + Chr(10)
If Log = 1
AddGadgetItem(#Editor_11, -1 , "L3_Sende= " + Login.s)
EndIf
If SendNetworkData(ConID, @An, Len(An.s)) = - 1
MessageRequester("Error", "Server akzeptiert Antwort nicht.!", 0)
EndIf
Delay(dt)
;Vierte Sequenz vom Server Password;---------------------------------------------------------------
Text.s = ""
Repeat
DatenBuffer.s = Space(100)
V = ReceiveNetworkData(ConID, @DatenBuffer, Len(DatenBuffer))
Text.s = Text.s +(Trim(RemoveString(DatenBuffer, Chr(13) + Chr(10))))
If Right(Text.s, 9) = "Password:"
V = - 1
EndIf
Until V = - 1
If Log = 1
AddGadgetItem(#Editor_11, -1 , "P1_Erhalten= " + Right(Text.s, 9))
EndIf
An.s = Chr(255) + Chr(253) + Chr(1) + Passwort.s + Chr(13) + Chr(10)
If Log = 1
AddGadgetItem(#Editor_11, -1 , "P2_Sende= " + Passwort.s)
EndIf
If SendNetworkData(ConID, @An, Len(An.s)) = - 1
MessageRequester("Error", "Server akzeptiert Antwort nicht.!", 0)
EndIf
Delay(dt)
;Fünfte Sequenz vom Server Prompt ermitteln--------------------------------------------------------
Text.s = ""
Repeat
DatenBuffer.s = Space(100)
V = ReceiveNetworkData(ConID, @DatenBuffer, Len(DatenBuffer))
Text.s = Text.s +(Trim(RemoveString(DatenBuffer, Chr(13) + Chr(10))))
If Right(Text.s, 2) = "~#"
V = 0
EndIf
Until V = 0
For i = 0 To Len(Text.s)
If Mid(Text, i, 4) = "root"
Prompt.s = Mid(Text.s, i, Len(Text.s) - 2)
EndIf
Next
If Log = 1
AddGadgetItem(#Editor_11, -1 , "Pr1_Erhalten= " + Prompt.s)
EndIf
;sechste Sequenz Seriennummer abfragen ------------------------------------------------------------
For A = 1 To Befehle.l
Befehl.s = Telnet_Befehl.s(A)
An.s = Chr(255) + Chr(253) + Chr(1) + Befehl.s + Chr(13) + Chr(10)
If Log = 1
AddGadgetItem(#Editor_11, - 1, "Befehl_Senden= " + Befehl.s)
EndIf
;Befehl senden
If SendNetworkData(ConID, @An, Len(An.s)) = - 1
MessageRequester("Error", "Server akzeptiert Antwort nicht.!", 0)
EndIf
Delay(dt)
;Warten bis Antwort komplett
Text.s = ""
Repeat
DatenBuffer.s = Space(1000)
V = ReceiveNetworkData(ConID, @DatenBuffer, Len(DatenBuffer))
Text.s = Text.s +(Trim(DatenBuffer))
If Right(Text.s, 1) = "#"
For i = 1 To Len(Text.s)
If Mid(Text.s, i, Len(Prompt.s)) = Prompt.s
V = 0
Telnet_Ergebnis.s(A) = Text.s
EndIf
Next
EndIf
Until V = 0
If Log = 1
AddGadgetItem(#Editor_11, - 1, "Befehl_Empfangen= " + Text.s)
EndIf
Next
Else
MessageRequester("Error", "Keine Verbidung zum Hifidelio möglich! ", 0)
EndIf
CloseNetworkConnection(ConID)
EndProcedure
Procedure Seriennummer()
SetActiveWindow(#Window_0)
Befehle.l = 1
Telnet_Befehl.s(1) = "bash /opt/Fidelio/bin/opus"
Telnet()
Ser_Nr.s = Mid(Telnet_Ergebnis.s(1), 29, 5)
SetGadgetText(#Text_4, Ser_Nr.s)
ImageGadget(#Gadget, 75, 100, 350, 300, ImageID(1))
EndProcedure
OpenWindow_Window_0()
Programmstart()
;{- Event loop
Ziel.s = "\\" + IP_Adr.s + "\import\"
If InitNetwork() = 0
MessageRequester("Error", "Can't initialize the network !", 0)
EndIf
Repeat
Event = WaitWindowEvent()
Select Event
; ///////////////////
Case #PB_Event_Gadget
EventGadget = EventGadget()
EventType = EventType()
If EventGadget = #IPAddress_0
IP_Adr.s = GetGadgetText(#IPAddress_0)
Ziel.s = "\\" + IP_Adr.s + "\import\"
ElseIf EventGadget = #Text_1
ElseIf EventGadget = #Button_1
Seriennummer()
ElseIf EventGadget = #Button_2
ElseIf EventGadget = #Button_3
ElseIf EventGadget = #Button_4
ElseIf EventGadget = #String_1
Passwort = GetGadgetText(#String_1)
ElseIf EventGadget = #Text_2
ElseIf EventGadget = #Text_3
ElseIf EventGadget = #Text_4
ElseIf EventGadget = #Check_1
If GetGadgetState(#Check_1) = 1
OpenWindow_Window_1()
Log = 1
Else
CloseWindow(#Window_1)
Log = 0
EndIf
ElseIf EventGadget = #Gadget
EndIf
; ////////////////////////
Case #PB_Event_Menu
Select EventMenu() ; To see which menu has been selected
Case 102 ; Sub >> Vergebene IPAdressen zuücksetzen
Case 103 ; Sub >> Musik retten
Case 1 ; Sub >> Internetradio
Case 2 ; Sub >> Musikordner freigeben
Case 99 ; Ende
Programmende()
EndSelect
Case #PB_Event_CloseWindow
EventWindow = EventWindow()
If EventWindow = #Window_0
CloseWindow(#Window_0)
Break
EndIf
EndSelect
ForEver
;;}
Ich hoffe es ist einigermaßen verständlich.
Update also doch komplett.