29.04.2010, 14:10
Beitrag #1
|
|
|
29.04.2010, 20:55
Beitrag #2
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
LabVIEW Netzwerk Library mit Support für SSL, Ping und IPv6
Hört sich interessant an.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
30.04.2010, 08:54
Beitrag #3
|
RoLe
LVF-Guru
Beiträge: 1.236
Registriert seit: Jul 2007
-
1997
en
0
Schweiz
|
LabVIEW Netzwerk Library mit Support für SSL, Ping und IPv6
Super, nun können wir "richtig" Pingen in LabVIEW.
Was ich sehr interessant finde, sind die eigenen Property's.
Irgendwie steht das in den rc und rch File.
Wie macht man das, bzw. wie sind verkettet ?
Hast du da irgenwelche Links/Dokus?
.·´¯)--> Leben ist das, was dir passiert, wenn du eifrig dabei bist andere Pläne zu machen <--(¯`·.
|
|
|
30.04.2010, 09:31
(Dieser Beitrag wurde zuletzt bearbeitet: 30.04.2010 09:49 von rolfk.)
Beitrag #4
|
rolfk
LVF-Guru
Beiträge: 2.305
Registriert seit: Jun 2007
alle seit 6.0
1992
EN
2901GG
Niederlande
|
LabVIEW Netzwerk Library mit Support für SSL, Ping und IPv6
' schrieb:
Super, nun können wir "richtig" Pingen in LabVIEW.
Also mit einer Einschränkung! Das geht nur wenn der entsprechende Prozess Administratorprivileges hat (oder man die in der ICMP Funktion beschriebenen Registrysettings einstellt, was ich aber ehrlich gesagt noch nicht getestet habe).
Zitat:Was ich sehr interessant finde, sind die eigenen Property's.
Irgendwie steht das in den rc und rch File.
Wie macht man das, bzw. wie sind verkettet ?
Hast du da irgenwelche Links/Dokus?
Sorry das ist alles mit viel trial and error zusammengehackt und ist deutlich kein Feature das NI für Enduser gedacht hat. Vieles da drin funktioniert manchmal nur in bestimmten Kombinationen, obwohl das scheinbar nicht direkt sinnvoll ist. Auch muss man aufpassen da gewisse logische Dinge in 7.1 und 8.0 nicht oder nur scheinbar funktionieren und irgendwann in 8.x plötzlich schon. LabVIEW 8.6 und 2009 unterstützt auch noch ein RCVersion: 4 Format aber ich habe keine Idee was da die Neuerungen sind.
Ich werde mich mal hinsetzen und versuchen das bischen was ich weiss sauber zu dokumentieren, da ich im Moment allerlei schwer lesbare kleine Dokumente habe mit alles ausser sauberer Syntaxbeschreibung. Aber mit dem RC Format alleine ist es noch nicht getan. Die Userdata Refnums (die es auch noch in Tag Form (schaut aus wie ein VISA Refnum, und man kann im selben File keine Generic und Generic Tag Refnums mixen vor LabVIEW 8.2 weil das der Objekt Parser scheinbar nicht schnallt) und noch in verschiedenen weiteren Varianten gibt, Generic Tag Flatten, etc) sind völlig undokumentiert soweit ich weiss.
Es gibt da einige private Nodes mit denen man aus einem 32 bit Integer eine Userdata Refnum machen kann. Selber habe ich diese Funktionen aus verschiedenen technischen Gründen gleich im C code ausgeführt, was noch viel undokumentierter ist und absolut frustrierend weil man konstant crasht wenn man etwas nicht richtig hat, was bei undokumentierten Features absolut unvermeidlich ist
Ein anderer frustrierender Aspekt ist das Syntax Errors im RC file die Objekte völlig unsichtbar machen und LabVIEW nirgendwo eine gute Fehlermeldung gibt. Eine minimale Lösung ist das hinzufügen zum INI File von:
createLogFile=True
DPrintfLogging=True
DPrintfToFile=True
promoteDWarnInternals=True
Ich weiss jetzt gerade nicht welche davon wirklich nötig sind und habe keine Lust das auszuprobieren.
Mit diesen Settings kriegt man manchmal eine Zeile mit der Angabe "OMParse: <kurze generike Fehlermeldung mit Zeilennummer>" im dprintf.txt file im LabVIEW Folder.
Die RC Files werden nur beim Starten geparst, (und es gibt scheinbar keine andere Möglichkeit das in LabVIEW anzustossen), also nach jedem Fehler: LabVIEW abschliessen, File editieren, LabVIEW starten, schauen, und in 99% der Fälle ganz fest fluchen .
Das ist also wirklich eine frustrierende Erfahrung!
EDIT: Was ich noch zu sagen vergass, dies alles ist eindeutig nur sinnvoll im Zusammenhang mit einer externen Library (DLL, shared library) da das ganze "Object Manager" Interface darauf gebaut ist. Das RC File übernimmt die Aufgabe zwischen dieser externen Library und dem LabVIEW Property und Method Interface zu vermitteln und gibt LabVIEW die nötigen Informationen um den Maschinencode zu erzeugen um diese externe Library aufzurufen. Das bedeutet aber auch dass die externe Library ganz spezifische Funktionen exportieren muss und alle Datentypen die diese Funktion empfängt für Property und Method Implementation sind immer native LabVIEW Datentypen (String und Array Handles) und müssen mit den entsprechenden LabVIEW Manager Funktionen erzeugt, verändert und frei gegeben werden.
Das alles wird es für die meisten potentielen Benützer wohl eher unwahrscheinlich machen dass sie sich überhaubt da hinein arbeiten wollen da die shared Library ganz explizit für LabVIEW und dieses Interface geschrieben werden muss, und man wirklich sehr viele Kenntnisse über die LabVIEW C Datentypen und Schnittstellen haben muss.
|
|
|
30.04.2010, 14:21
Beitrag #5
|
RoLe
LVF-Guru
Beiträge: 1.236
Registriert seit: Jul 2007
-
1997
en
0
Schweiz
|
LabVIEW Netzwerk Library mit Support für SSL, Ping und IPv6
' schrieb:Also mit einer Einschränkung! Das geht nur wenn der entsprechende Prozess Administratorprivileges hat (oder man die in der ICMP Funktion beschriebenen Registrysettings einstellt, was ich aber ehrlich gesagt noch nicht getestet habe).
Das ist aber schade.
Ev. könnte man das ICMP-Open mit einem Login versehen. Weis nicht ob es das als C gibt.
Mit C# habe ich ein RunProcessAsAdmin gemacht, jedoch geht das bis jetzt nur mit Filename. (Ersatz für das SystemExec.vi)
Oder, wie starte ich einen Prozess mit Adminrechten, aussert LabVIEW (oder die erstellte EXE) als Admin zu starten?
Ich habe mir ein Ping mit c#/net gemacht, dort gibt es extra System.Net.NetworkInformation.Ping das mit den User-Rechten läuft. Jedoch mit 8.2 geht es nicht, mit 9.0 schon (unter Vista, denke es geht erst mit einem Vista-Ready LV)
.·´¯)--> Leben ist das, was dir passiert, wenn du eifrig dabei bist andere Pläne zu machen <--(¯`·.
|
|
|
30.04.2010, 14:31
Beitrag #6
|
|
|
30.04.2010, 17:08
Beitrag #7
|
rolfk
LVF-Guru
Beiträge: 2.305
Registriert seit: Jun 2007
alle seit 6.0
1992
EN
2901GG
Niederlande
|
LabVIEW Netzwerk Library mit Support für SSL, Ping und IPv6
' schrieb:Das ist aber schade.
Ev. könnte man das ICMP-Open mit einem Login versehen. Weis nicht ob es das als C gibt.
Mit C# habe ich ein RunProcessAsAdmin gemacht, jedoch geht das bis jetzt nur mit Filename. (Ersatz für das SystemExec.vi)
Oder, wie starte ich einen Prozess mit Adminrechten, aussert LabVIEW (oder die erstellte EXE) als Admin zu starten?
Ich habe mir ein Ping mit c#/net gemacht, dort gibt es extra System.Net.NetworkInformation.Ping das mit den User-Rechten läuft. Jedoch mit 8.2 geht es nicht, mit 9.0 schon (unter Vista, denke es geht erst mit einem Vista-Ready LV)
Login ginge wohl schon ist aber nicht etwas das ich machen möchte. Das geht einfach zu weit wenn eine einzelne Funktion das macht. Dass Raw sockets beschränkt sind auf Admin Rechte, respektieve unter Linux alternativ auch mit speziellen Applikationsrechten (die durch einen Administrator gegeben werden müssen), ist etwas Platformübergreifendes. Es gibt unter Windows eine spezielle ICMP DLL die das scheinbar umgeht, wahrscheinlich durch einen eigenen Kerneltreiber der sich da irgenwie in die Winsocks einklinkt, aber diese Schnittstelle ist auf neueren Windows Versionen offiziel als "not for new designs" deklariert. Deshalb habe ich mich auch noch nicht weiter mit dieser Variante abgegeben. Die ICMP Implementation in dieser Library ist im Prinzip ein Nebeneffekt weil ich einen Testcase für den Rawsocketzugang nötig hatte und das ICMP Echo Reply ist an sich recht einfach zu implementieren.
Kannst ja mal den Registry Hack probieren. Für das Distributieren von Applikationen an andere Benützer ist das zwar keine wirkliche Lösung (da man auf diese Weise den Raw-Socket Zugang für alle Applikationen, inklusive eventuelle Trojans und Backdoors öffnet) aber es ist zumindest eine mögliche Variante.
Unter Windows XP und neuer wird die sinnvollste Variante sein, dem Executable ein Manifest mitzugeben das angibt dass man explicit ein Admin Login beim Aufstarten verlangt. Vielleicht schaue ich noch mal ob es eine Möglichkeit gibt das ICMP DLL Interface auf eine saubere Art in meine Library einzubauen, aber hohe Priorität hat das nicht.
|
|
|
05.05.2010, 09:23
Beitrag #8
|
RoLe
LVF-Guru
Beiträge: 1.236
Registriert seit: Jul 2007
-
1997
en
0
Schweiz
|
LabVIEW Netzwerk Library mit Support für SSL, Ping und IPv6
' schrieb:Kannst ja mal den Registry Hack probieren.
Nein, das mache ich nicht.
' schrieb:Unter Windows XP und neuer wird die sinnvollste Variante sein, dem Executable ein Manifest mitzugeben das angibt dass man explicit ein Admin Login beim Aufstarten verlangt. Vielleicht schaue ich noch mal ob es eine Möglichkeit gibt das ICMP DLL Interface auf eine saubere Art in meine Library einzubauen, aber hohe Priorität hat das nicht.
Das geht, jedenfalls bei mir, so nicht unter Vista.
Ich bin lokal Admin, kann das "als Admin ausführen" nur bestätigen, kein Login.
Aber, wenn ich "richtig" Admin bin, nach Bestätigung, habe ich aus Sicherheitsgründen kein Netzwerkzugriff mehr.
Ob das so üblich ist, weis ich nicht. Jedenfalls geht es bei mir nur mit einem User-Ping.
Nochmals Danke für die ausführlichen Erläuterungen, für mich ist hier fertig.
.·´¯)--> Leben ist das, was dir passiert, wenn du eifrig dabei bist andere Pläne zu machen <--(¯`·.
|
|
|
05.05.2010, 10:31
Beitrag #9
|
rolfk
LVF-Guru
Beiträge: 2.305
Registriert seit: Jun 2007
alle seit 6.0
1992
EN
2901GG
Niederlande
|
LabVIEW Netzwerk Library mit Support für SSL, Ping und IPv6
' schrieb:Nein, das mache ich nicht.
Das geht, jedenfalls bei mir, so nicht unter Vista.
Ich bin lokal Admin, kann das "als Admin ausführen" nur bestätigen, kein Login.
Aber, wenn ich "richtig" Admin bin, nach Bestätigung, habe ich aus Sicherheitsgründen kein Netzwerkzugriff mehr.
Ob das so üblich ist, weis ich nicht. Jedenfalls geht es bei mir nur mit einem User-Ping.
Funktioniert die ICMP Open als lokal Admin bei Dir wirklich nicht? Und als normaler User hast Du schon ein UAC? Ich werde mal schauen ob es da etwas gibt um eine Applikation beim "Starten explicit zu "elevaten". Irgendetwas muss da sein, weil Windows macht es auch bei bestimmten Applikationen nach einem ziemlich verqueren Algorithme der unter anderem sagt dass Programme die setup.exe heissen so einen UAC haben sollten.
|
|
|
05.05.2010, 11:59
|
RoLe
LVF-Guru
Beiträge: 1.236
Registriert seit: Jul 2007
-
1997
en
0
Schweiz
|
LabVIEW Netzwerk Library mit Support für SSL, Ping und IPv6
' schrieb:Funktioniert die ICMP Open als lokal Admin bei Dir wirklich nicht?
Habe das nochmal mal durchgespielt.
Wenn ich LabVIEW 8.2/9.0 normal starte (lokal Admin), bekomme ich immer Fehler 54 vom ICMP-Open.
Wenn ich LabVIEW mit UAC starte (rechte Taste als Admin, ok) dann geht folgendes:
- Localhost oder Computername oder die eigene IP 172.16.60.81 - geht
- 172.16.10.54 eine SPS, die geht nicht.
- http://www.ni.com geht auch nicht, da ich mit UAC kein Netzwerk mehr habe.
Mit dem DOS Ping.exe geht alles, ohne UAC.
.·´¯)--> Leben ist das, was dir passiert, wenn du eifrig dabei bist andere Pläne zu machen <--(¯`·.
|
|
|
| |