Laden...

PostgreSQL Zugriff ohne npgsql

Erstellt von thetruedon vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.147 Views
thetruedon Themenstarter:in
111 Beiträge seit 2011
vor 9 Jahren
PostgreSQL Zugriff ohne npgsql

verwendetes Datenbanksystem: PostgreSQL

Hallo
ich versuche gerade auf eine PostgreSQL Datenbank via TcpClient zuzugreifen. Dafür habe ich mir auch schon die Doku zum Message Flow und Message Formates angesehen aber ich bekomme einfach nicht heraus in welchem Format die Startup Message gesendet werden muss.

Ich habe:
Datenbank: AAA
Benutzer: BBB
Passwort: CCC

In der Doku steht zwar

Int32(Messagelänge)Int32(Protokollversion)String(Parameter)\0

Aber keinerlei auskunft wie die Parameter angegeben werden (parameter=value, parameter:value usw)

Im Netz findet man auch nur die Verwendung von NpgSql auf die ich aber nicht zurückgreifen kann.

Ich habe es schon mit diversen Varianten versucht aber bei allen bekomme ich die > Fehlermeldung:

EFATAL: no PostgreSQL user name specified in startup packet\n\0

Auch wenn ich user=AAA (oder in anderen Formaten) angebe.

Kann mir jemand hier weiterhelfen?

Kommt ein Mann in die Wirtschaft und sagt zum Wirt: 16 Bit!
Sagt der Wirt: Das ist ein Wort!

W
955 Beiträge seit 2010
vor 9 Jahren

Hallo,

Allgemein gesagt könntest Du
* im Quelltext von npgsql nachsehen
* mit wireshark mitschneiden was npgsql sendet

thetruedon Themenstarter:in
111 Beiträge seit 2011
vor 9 Jahren

Nichts dass ich in Wire Shark ansehen konnte enthielt auch nur ansatzweise etwas im Format

Int32 int32 String (Parameter Value)

Hier nocheinmal der Link zur Doku (siehe unten StartUpMessage)

Kommt ein Mann in die Wirtschaft und sagt zum Wirt: 16 Bit!
Sagt der Wirt: Das ist ein Wort!

16.806 Beiträge seit 2008
vor 9 Jahren

Was spricht gegen die Verwendung des BSD-lizenzierten NPGSQL? Du sagst nur "kann nicht".
Das alles selbst, alleine via TCP umzusetzen unterstützt Du glaube ich massiv.

thetruedon Themenstarter:in
111 Beiträge seit 2011
vor 9 Jahren

Dagegen spricht nur Bürokratie die bei Kunden des öffentlichen Sektors leider immer wieder Schranken aufwirft. Ich habe Auflagen die unter anderem die Nutzung der NpgSql untersagen.
Ich bin mir nicht sicher weshalb.

Aber in dem Fall muss auch "nur" ein Startup gesendet werden alles andere wie Abfragen etc. ist nicht notwendig. Auch wenn es recht sinnfrei klingt. Deshalb dachte ich sollte es hier auch wenig Probleme geben aber es will mir einfach nicht gelingen.

Kommt ein Mann in die Wirtschaft und sagt zum Wirt: 16 Bit!
Sagt der Wirt: Das ist ein Wort!

thetruedon Themenstarter:in
111 Beiträge seit 2011
vor 9 Jahren

Ich hab die Lösung gefunden:

Ich will mich z.B. als User AAA bei der Datenbank BBB anmelden

so sende ich:

Nachrichtlänge(31)Protokollversion(3)user\0AAA\0database\0BBB\0\0

was binär dann

\000\000\000\033\000\003\000\000user\000AAA\000database\000BBB\000\000

wobei natürlich auch die Buchstaben in Byte umgewandelt werden müssen. Das habe ich jetzt nur der Übersicht wegen in Buchstaben geschrieben.

Kommt ein Mann in die Wirtschaft und sagt zum Wirt: 16 Bit!
Sagt der Wirt: Das ist ein Wort!

W
955 Beiträge seit 2010
vor 9 Jahren

Nichts dass ich in Wire Shark ansehen konnte enthielt auch nur ansatzweise etwas im Format

Doch, dann hättest Du gesehen dass die Strings nullterminiert sind.