Nyeste innlegg

Sider: 1 ... 3 4 [5] 6 7 ... 10
41
Generelt teknisk / C++ OpenSSL BIO* from accept() on plain socket file descriptor
« Nyeste innlegg av Floyd-ATC 22. November 2020, 19:20 pm »
I wanted to use TLS on a regular socket file descriptor and could not find a single man-page or example explaining how to construct the BIO* that let me do cleartext BIO_read() and BIO_write() on a HTTPS socket.

After much experimenting, I finally figured it out. Making a note here for future reference.

Kode: [Velg]
// context is a smart pointer to a CTX* structure containing certs etc.
// server_fd is a plain TCP socket descriptor in "listen" mode
// returns client_fd that your application must close
// Use BIO_read() and BIO_write() to communicate with the client,
// you *MUST NOT* read/write on client_fd
int Socket::accept(const Context& context, int server_fd)
{
  this->verify_flag = -1;
  this->ssl = nullptr;
  this->bio = nullptr;

  // TCP accept
  int client_fd = Net::accept(server_fd);
  if (client_fd != -1) {
    // TCP accept successful

    // Create a BIO chain and get the SSL pointer
    BIO* raw = BIO_new_socket(client_fd, BIO_NOCLOSE);
    BIO* ssl = BIO_new_ssl(context.get(), 0); // 0=server, 1=client
    this->bio = BIO_push(ssl, raw);
    BIO_get_ssl(ssl, &this->ssl);
   
    // SSL protocol accept
    int rc = SSL_accept(this->ssl);
    if (rc <= 0) {
      // 0 = SSL failure, <0 = connection failure
      report_error("SSL_accept...");
      Net::close(client_fd);
      client_fd = -1;
    }

    std::cout << "calling SSL_get_verify_result()" << std::endl;
    this->verify_flag = SSL_get_verify_result(this->ssl);
  }
  return client_fd;
}

42
Minecraft / Sv: Når serveren er nede så snakker vi her =)
« Nyeste innlegg av Emilpoika 20. November 2020, 00:49 am »
Heyall! long time no see, hehe bringer minnner å browse forumet her..

Lurer enda om folk her er aktive fremdeles, og er serveren oppe å går? :D

Tok meg under 5 timer å se at du hadde postet, men å påstå at man er "aktiv" blir kanskje å ta litt av?

Serveren har vært nede i flere dager, men var oppe i mange mnd. fram til for noen uker siden.
Det var faktisk litt gjevnlig aktivitet på serveren i sommer.

Forumet har hatt litt problemer med at noen får laget brukere uten å gå gjennom noen godkjennelse (spam), men de postene er nok det meste som har blitt skrevet i år.
43
Minecraft / Sv: Når serveren er nede så snakker vi her =)
« Nyeste innlegg av mrthewil 19. November 2020, 20:34 pm »
Heyall! long time no see, hehe bringer minnner å browse forumet her..

Lurer enda om folk her er aktive fremdeles, og er serveren oppe å går? :D
44
Generelt teknisk / The best thing about comics
« Nyeste innlegg av Beauvais 07. November 2020, 14:35 pm »
The best thing about comics is that a comic creator can control when and where the reader sees exciting things in the comic. These exciting moments in the comic are generally placed after the turn of a page To Know More.
45
Generelt teknisk / C++ unique_ptr wrapper for strdup()
« Nyeste innlegg av Floyd-ATC 29. ſeptember 2020, 11:48 am »
How to wrap a char* from strdup() in a smart pointer to guarantee it gets freed?

Kode: [Velg]
#include <memory>
typedef std::unique_ptr<char, decltype(&std::free)> char_ptr;

char_ptr make_char_ptr(const std::string str)
{
  return char_ptr(strdup(str.data()), std::free);
}

//...

char_ptr foo = make_char_ptr("bar");
foo.get(); // char* pointer to a copy of "bar"

// pointer automatically gets freed when 'foo' goes out of scope
// or can be freed manually with
foo.reset();
46
English / Sv: Basic Info
« Nyeste innlegg av MariaRizzo 11. Juli 2020, 11:39 am »
An index of the topic is argued or the strengthened element for the turns for the shows. Path of the https://www.australian-writings.org/ is improved for the shaded element for the joyful means for the structured opinion for the citizens.
47
Minecraft / Sv: Når serveren er nede så snakker vi her =)
« Nyeste innlegg av Emilpoika 17. Juni 2020, 21:17 pm »
For ordens skyld: Serveren kjører fortsatt Minecraft 1.8.9
Det dynamsike kartet har vært nede lenge, men det oppe nå.

Tror ikke serveren vil bli oppdatert til noen nyere versjon, dessverre :/
48
Minecraft / Sv: 17 Mai!
« Nyeste innlegg av Emilpoika 17. Mai 2020, 00:19 am »
Fjerde år på rad, men noe forsinket: Gratulerere med gårsdagen ;)
Femte år nå, gratulerer med dagen!
Bump bigtime! :D
Gratulerer med dagen!

Jeg gir meg stadig ikke; Gratulerer med dagen!

Gratulerer med dagen!

Noen tradisjoner må holdes, gratulerer med dagen!
49
Generelt teknisk / C++ unix timestamp in seconds as a double with millisecond precision
« Nyeste innlegg av Floyd-ATC 30. Desember 2019, 12:15 pm »
This question seems to be a FAQ that nobody seems to understand or answer correctly, instead answering a lot of other questions dealing with clock irregularity and loss of precision when dealing with nanoseconds. Neither of which matter when you're using double precision and only want milliseconds for moving a game object on the screen or whatever and the occasional jitter or skew from a timesync event isn't going to bring about the end of civilization as we know it.

So here's how I finally managed to solve it with my fairly limited C++ skill:
Kode: [Velg]
double now() {
  auto time = std::chrono::system_clock::now().time_since_epoch();
  std::chrono::seconds seconds = std::chrono::duration_cast< std::chrono::seconds >(time);
  std::chrono::milliseconds ms = std::chrono::duration_cast< std::chrono::milliseconds >(time);
  return (double) seconds.count() + ((double) (ms.count() % 1000)/1000.0);
}

Sample output:
Kode: [Velg]
1577703729.406= Unix timestamp in seconds as a double with millisecond precision.

There you have it.

Useful in pretty much any formula that deals with time in seconds, yet somehow not documented anywhere and unbelievably verbose for a modern library supposedly written specifically to deal exclusively with time.
50
Minecraft / Sv: Minecraft Pjatt
« Nyeste innlegg av Emilpoika 24. Desember 2019, 00:56 am »
God jul i år óg!
Bumping ftw!
God jul, og godt nytt år!

Jeg gir meg aldri ;God Jul!
Sider: 1 ... 3 4 [5] 6 7 ... 10