/** * HTTP API: WP_Http_Curl class * * @package WordPress * @subpackage HTTP * @since 4.4.0 */ /** * Core class used to integrate Curl as an HTTP transport. * * HTTP request method uses Curl extension to retrieve the url. * * Requires the Curl extension to be installed. * * @since 2.7.0 * @deprecated 6.4.0 Use WP_Http * @see WP_Http */ #[AllowDynamicProperties] class WP_Http_Curl { /** * Temporary header storage for during requests. * * @since 3.2.0 * @var string */ private $headers = ''; /** * Temporary body storage for during requests. * * @since 3.6.0 * @var string */ private $body = ''; /** * The maximum amount of data to receive from the remote server. * * @since 3.6.0 * @var int|false */ private $max_body_length = false; /** * The file resource used for streaming to file. * * @since 3.6.0 * @var resource|false */ private $stream_handle = false; /** * The total bytes written in the current request. * * @since 4.1.0 * @var int */ private $bytes_written_total = 0; /** * Send a HTTP request to a URI using cURL extension. * * @since 2.7.0 * * @param string $url The request URL. * @param string|array $args Optional. Override the defaults. * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. A WP_Error instance upon error */ public function request( $url, $args = array() ) { $defaults = array( 'method' => 'GET', 'timeout' => 5, 'redirection' => 5, 'httpversion' => '1.0', 'blocking' => true, 'headers' => array(), 'body' => null, 'cookies' => array(), 'decompress' => false, 'stream' => false, 'filename' => null, ); $parsed_args = wp_parse_args( $args, $defaults ); if ( isset( $parsed_args['headers']['User-Agent'] ) ) { $parsed_args['user-agent'] = $parsed_args['headers']['User-Agent']; unset( $parsed_args['headers']['User-Agent'] ); } elseif ( isset( $parsed_args['headers']['user-agent'] ) ) { $parsed_args['user-agent'] = $parsed_args['headers']['user-agent']; unset( $parsed_args['headers']['user-agent'] ); } // Construct Cookie: header if any cookies are set. WP_Http::buildCookieHeader( $parsed_args ); $handle = curl_init(); // cURL offers really easy proxy support. $proxy = new WP_HTTP_Proxy(); if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) { curl_setopt( $handle, CURLOPT_PROXYTYPE, CURLPROXY_HTTP ); curl_setopt( $handle, CURLOPT_PROXY, $proxy->host() ); curl_setopt( $handle, CURLOPT_PROXYPORT, $proxy->port() ); if ( $proxy->use_authentication() ) { curl_setopt( $handle, CURLOPT_PROXYAUTH, CURLAUTH_ANY ); curl_setopt( $handle, CURLOPT_PROXYUSERPWD, $proxy->authentication() ); } } $is_local = isset( $parsed_args['local'] ) && $parsed_args['local']; $ssl_verify = isset( $parsed_args['sslverify'] ) && $parsed_args['sslverify']; if ( $is_local ) { /** This filter is documented in wp-includes/class-wp-http-streams.php */ $ssl_verify = apply_filters( 'https_local_ssl_verify', $ssl_verify, $url ); } elseif ( ! $is_local ) { /** This filter is documented in wp-includes/class-wp-http.php */ $ssl_verify = apply_filters( 'https_ssl_verify', $ssl_verify, $url ); } /* * CURLOPT_TIMEOUT and CURLOPT_CONNECTTIMEOUT expect integers. Have to use ceil since. * a value of 0 will allow an unlimited timeout. */ $timeout = (int) ceil( $parsed_args['timeout'] ); curl_setopt( $handle, CURLOPT_CONNECTTIMEOUT, $timeout ); curl_setopt( $handle, CURLOPT_TIMEOUT, $timeout ); curl_setopt( $handle, CURLOPT_URL, $url ); curl_setopt( $handle, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $handle, CURLOPT_SSL_VERIFYHOST, ( true === $ssl_verify ) ? 2 : false ); curl_setopt( $handle, CURLOPT_SSL_VERIFYPEER, $ssl_verify ); if ( $ssl_verify ) { curl_setopt( $handle, CURLOPT_CAINFO, $parsed_args['sslcertificates'] ); } curl_setopt( $handle, CURLOPT_USERAGENT, $parsed_args['user-agent'] ); /* * The option doesn't work with safe mode or when open_basedir is set, and there's * a bug #17490 with redirected POST requests, so handle redirections outside Curl. */ curl_setopt( $handle, CURLOPT_FOLLOWLOCATION, false ); curl_setopt( $handle, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS ); switch ( $parsed_args['method'] ) { case 'HEAD': curl_setopt( $handle, CURLOPT_NOBODY, true ); break; case 'POST': curl_setopt( $handle, CURLOPT_POST, true ); curl_setopt( $handle, CURLOPT_POSTFIELDS, $parsed_args['body'] ); break; case 'PUT': curl_setopt( $handle, CURLOPT_CUSTOMREQUEST, 'PUT' ); curl_setopt( $handle, CURLOPT_POSTFIELDS, $parsed_args['body'] ); break; default: curl_setopt( $handle, CURLOPT_CUSTOMREQUEST, $parsed_args['method'] ); if ( ! is_null( $parsed_args['body'] ) ) { curl_setopt( $handle, CURLOPT_POSTFIELDS, $parsed_args['body'] ); } break; } if ( true === $parsed_args['blocking'] ) { curl_setopt( $handle, CURLOPT_HEADERFUNCTION, array( $this, 'stream_headers' ) ); curl_setopt( $handle, CURLOPT_WRITEFUNCTION, array( $this, 'stream_body' ) ); } curl_setopt( $handle, CURLOPT_HEADER, false ); if ( isset( $parsed_args['limit_response_size'] ) ) { $this->max_body_length = (int) $parsed_args['limit_response_size']; } else { $this->max_body_length = false; } // If streaming to a file open a file handle, and setup our curl streaming handler. if ( $parsed_args['stream'] ) { if ( ! WP_DEBUG ) { $this->stream_handle = @fopen( $parsed_args['filename'], 'w+' ); } else { $this->stream_handle = fopen( $parsed_args['filename'], 'w+' ); } if ( ! $this->stream_handle ) { return new WP_Error( 'http_request_failed', sprintf( /* translators: 1: fopen(), 2: File name. */ __( 'Could not open handle for %1$s to %2$s.' ), 'fopen()', $parsed_args['filename'] ) ); } } else { $this->stream_handle = false; } if ( ! empty( $parsed_args['headers'] ) ) { // cURL expects full header strings in each element. $headers = array(); foreach ( $parsed_args['headers'] as $name => $value ) { $headers[] = "{$name}: $value"; } curl_setopt( $handle, CURLOPT_HTTPHEADER, $headers ); } if ( '1.0' === $parsed_args['httpversion'] ) { curl_setopt( $handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0 ); } else { curl_setopt( $handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1 ); } /** * Fires before the cURL request is executed. * * Cookies are not currently handled by the HTTP API. This action allows * plugins to handle cookies themselves. * * @since 2.8.0 * * @param resource $handle The cURL handle returned by curl_init() (passed by reference). * @param array $parsed_args The HTTP request arguments. * @param string $url The request URL. */ do_action_ref_array( 'http_api_curl', array( &$handle, $parsed_args, $url ) ); // We don't need to return the body, so don't. Just execute request and return. if ( ! $parsed_args['blocking'] ) { curl_exec( $handle ); $curl_error = curl_error( $handle ); if ( $curl_error ) { if ( PHP_VERSION_ID < 80000 ) { // curl_close() has no effect as of PHP 8.0. curl_close( $handle ); } return new WP_Error( 'http_request_failed', $curl_error ); } if ( in_array( curl_getinfo( $handle, CURLINFO_HTTP_CODE ), array( 301, 302 ), true ) ) { if ( PHP_VERSION_ID < 80000 ) { // curl_close() has no effect as of PHP 8.0. curl_close( $handle ); } return new WP_Error( 'http_request_failed', __( 'Too many redirects.' ) ); } if ( PHP_VERSION_ID < 80000 ) { // curl_close() has no effect as of PHP 8.0. curl_close( $handle ); } return array( 'headers' => array(), 'body' => '', 'response' => array( 'code' => false, 'message' => false, ), 'cookies' => array(), ); } curl_exec( $handle ); $processed_headers = WP_Http::processHeaders( $this->headers, $url ); $body = $this->body; $bytes_written_total = $this->bytes_written_total; $this->headers = ''; $this->body = ''; $this->bytes_written_total = 0; $curl_error = curl_errno( $handle ); // If an error occurred, or, no response. if ( $curl_error || ( 0 === strlen( $body ) && empty( $processed_headers['headers'] ) ) ) { if ( CURLE_WRITE_ERROR /* 23 */ === $curl_error ) { if ( ! $this->max_body_length || $this->max_body_length !== $bytes_written_total ) { if ( $parsed_args['stream'] ) { if ( PHP_VERSION_ID < 80000 ) { // curl_close() has no effect as of PHP 8.0. curl_close( $handle ); } fclose( $this->stream_handle ); return new WP_Error( 'http_request_failed', __( 'Failed to write request to temporary file.' ) ); } else { if ( PHP_VERSION_ID < 80000 ) { // curl_close() has no effect as of PHP 8.0. curl_close( $handle ); } return new WP_Error( 'http_request_failed', curl_error( $handle ) ); } } } else { $curl_error = curl_error( $handle ); if ( $curl_error ) { if ( PHP_VERSION_ID < 80000 ) { // curl_close() has no effect as of PHP 8.0. curl_close( $handle ); } return new WP_Error( 'http_request_failed', $curl_error ); } } if ( in_array( curl_getinfo( $handle, CURLINFO_HTTP_CODE ), array( 301, 302 ), true ) ) { if ( PHP_VERSION_ID < 80000 ) { // curl_close() has no effect as of PHP 8.0. curl_close( $handle ); } return new WP_Error( 'http_request_failed', __( 'Too many redirects.' ) ); } } if ( PHP_VERSION_ID < 80000 ) { // curl_close() has no effect as of PHP 8.0. curl_close( $handle ); } if ( $parsed_args['stream'] ) { fclose( $this->stream_handle ); } $response = array( 'headers' => $processed_headers['headers'], 'body' => null, 'response' => $processed_headers['response'], 'cookies' => $processed_headers['cookies'], 'filename' => $parsed_args['filename'], ); // Handle redirects. $redirect_response = WP_Http::handle_redirects( $url, $parsed_args, $response ); if ( false !== $redirect_response ) { return $redirect_response; } if ( true === $parsed_args['decompress'] && true === WP_Http_Encoding::should_decode( $processed_headers['headers'] ) ) { $body = WP_Http_Encoding::decompress( $body ); } $response['body'] = $body; return $response; } /** * Grabs the headers of the cURL request. * * Each header is sent individually to this callback, and is appended to the `$header` property * for temporary storage. * * @since 3.2.0 * * @param resource $handle cURL handle. * @param string $headers cURL request headers. * @return int Length of the request headers. */ private function stream_headers( $handle, $headers ) { $this->headers .= $headers; return strlen( $headers ); } /** * Grabs the body of the cURL request. * * The contents of the document are passed in chunks, and are appended to the `$body` * property for temporary storage. Returning a length shorter than the length of * `$data` passed in will cause cURL to abort the request with `CURLE_WRITE_ERROR`. * * @since 3.6.0 * * @param resource $handle cURL handle. * @param string $data cURL request body. * @return int Total bytes of data written. */ private function stream_body( $handle, $data ) { $data_length = strlen( $data ); if ( $this->max_body_length && ( $this->bytes_written_total + $data_length ) > $this->max_body_length ) { $data_length = ( $this->max_body_length - $this->bytes_written_total ); $data = substr( $data, 0, $data_length ); } if ( $this->stream_handle ) { $bytes_written = fwrite( $this->stream_handle, $data ); } else { $this->body .= $data; $bytes_written = $data_length; } $this->bytes_written_total += $bytes_written; // Upon event of this function returning less than strlen( $data ) curl will error with CURLE_WRITE_ERROR. return $bytes_written; } /** * Determines whether this class can be used for retrieving a URL. * * @since 2.7.0 * * @param array $args Optional. Array of request arguments. Default empty array. * @return bool False means this class can not be used, true means it can. */ public static function test( $args = array() ) { if ( ! function_exists( 'curl_init' ) || ! function_exists( 'curl_exec' ) ) { return false; } $is_ssl = isset( $args['ssl'] ) && $args['ssl']; if ( $is_ssl ) { $curl_version = curl_version(); // Check whether this cURL version support SSL requests. if ( ! ( CURL_VERSION_SSL & $curl_version['features'] ) ) { return false; } } /** * Filters whether cURL can be used as a transport for retrieving a URL. * * @since 2.7.0 * * @param bool $use_class Whether the class can be used. Default true. * @param array $args An array of request arguments. */ return apply_filters( 'use_curl_transport', true, $args ); } } Rechtliche Folgen bei Kontosperrungen durch Online-Glücksspielaktivitäten – Shweta Poddar Weddings Photography

Gesetzeslage und Regulierungsrahmen für Online-Glücksspiele in Deutschland

Relevante Gesetze und Verordnungen im Überblick

Seit 2021 ist das deutsche Glücksspielrecht durch das Glücksspielstaatsvertrag (GlüStV) geregelt, der eine einheitliche Regulierung für Online-Glücksspiele schafft. Dieser Vertrag ermöglicht lizenzierte Anbieter, ihre Dienste legal anzubieten, sofern sie die strengen Vorgaben erfüllen. Das Glücksspielgesetz (GlüStV 2021) verbietet grundsätzlich private Glücksspielangebote ohne entsprechende Lizenz und setzt klare Grenzen bezüglich Spielarten, Werbung und Jugendschutz. Zusätzlich existieren Vorschriften des Strafgesetzbuches (StGB), insbesondere im Zusammenhang mit Glücksspielen, die illegalen Aktivitäten vorbeugen sollen.

Aufsichtsbehörden und deren Zuständigkeiten

In Deutschland obliegt die Regulierung des Glücksspiels den jeweiligen Landesfinanzbehörden. Seit 2023 übernimmt die Gemeinsame Glücksspielbehörde der Länder (GGL) die zentrale Aufsicht, um die Einhaltung des GlüStV zu gewährleisten. Diese Behörde prüft Lizenzen, überwacht die Anbieter und geht bei Verdacht auf illegale Angebote konsequent vor. Zudem sind die Landesbehörden bei Verdacht auf illegale Glücksspielangebote gefragt, insbesondere wenn Anbieter ohne Lizenz im Internet aktiv sind, was oft zu Kontosperrungen oder rechtlichen Konsequenzen führt.

Änderungen im rechtlichen Umfeld und deren Auswirkungen

Die rechtliche Landschaft für Online-Glücksspiele in Deutschland ist dynamisch. Mit der Implementierung des GlüStV 2021 wurden schärfere Maßnahmen gegen illegale Anbieter eingeführt. Hierdurch sind die Kontosperrungen bei nicht lizenzierten Anbietern und bei Verdacht auf Verstöße gegen die Lizenzbedingungen deutlich häufiger geworden. Nutzer müssen sich heute bewusster sein, dass Verstöße gegen die rechtlichen Vorgaben nicht nur zu Kontoschließungen führen, sondern auch weitere rechtliche Konsequenzen nach sich ziehen können, etwa strafrechtliche Verfahren bei illegalen Aktivitäten.

Typische Gründe für die Sperrung von Online-Konten im Glücksspielbereich

Verstoß gegen Lizenzbedingungen und Nutzungsregeln

Viele Anbieter sperren Konten, wenn Nutzer gegen festgelegte Nutzungsregeln verstoßen. Das kann beispielsweise die Verwendung von Betrugssoftware, das Mehrfach- oder Umschreiben von Konten oder das Eindringen in geschützte Bereiche des Angebots beinhalten. Solche Verstöße verletzen in der Regel die Lizenzbedingungen oder die Allgemeinen Geschäftsbedingungen (AGB) und führen zu sofortigen Sperren, um illegale Aktivitäten zu unterbinden.

Anhaltspunkte für illegale Aktivitäten und Betrugsversuche

Illegale Aktivitäten wie Geldwäsche, Betrug oder die Nutzung von gefälschten Identitäten sind wesentliche Gründe, warum Anbieter Konten sperren. Hierbei kommen vielfältige Hinweise zum Einsatz, etwa auffällige Wettsysteme, ungewöhnliche Transaktionsmuster oder automatisierte Meldungen der Plattformen. Solche Maßnahmen dienen dem Schutz der Integrität des Glücksspielmarktes und der Einhaltung gesetzlicher Vorgaben.

Automatisierte Erkennungssysteme und deren Rolle bei Kontosperrungen

Heutzutage setzen Anbieter komplexe Softwarelösungen ein, die verdächtiges Nutzerverhalten automatisch erkennen. Diese Systeme analysieren Echtzeitdaten, um Muster zu identifizieren, die auf Betrug oder Verstöße hindeuten. Bei Verdacht erfolgt eine automatische Sperrung, um potenziellen Schaden zu minimieren. Nutzer werden in der Regel erst nach Überprüfung durch den Kundendienst wieder freigeschaltet. Weitere Informationen finden Sie auf der dragonia seite.

Rechtliche Konsequenzen für Nutzer bei Kontosperrungen

Finanzielle Haftung und Rückforderungsansprüche

Bei Kontosperrungen im Zusammenhang mit illegalen Glücksspielaktivitäten können Nutzer mit finanziellen Rückforderungen konfrontiert werden. Anbieter behalten sich vor, Einzahlungen, Gewinne und Boni zurückzufordern, insbesondere wenn der Verdacht auf illegale Aktivitäten besteht. Zudem können Nutzer dazu verpflichtet werden, bereits ausgezahlte Gewinne zurückzuzahlen, wenn sich herausstellt, dass sie gegen gesetzliche Vorgaben verstoßen haben.

Strafrechtliche Folgen bei illegalen Glücksspielen

Das deutsche Strafgesetzbuch sieht bei illegalen Glücksspielen strengere Sanktionen vor. Wer ohne Lizenz Glücksspiele anbietet oder daran teilnimmt, riskiert Bußgelder, Freiheitsstrafen oder beides. Besonders gravierend sind Fälle, bei denen betrügerische Absichten (z.B. Manipulation von Spielern oder Wettbüros) nachgewiesen werden können. Das Betreten illegaler Online-Glücksspielplattformen kann zudem als Ordnungswidrigkeit gewertet werden, die eine strafrechtliche Verfolgung nach sich zieht.

Auswirkungen auf zukünftige Glücksspielaktivitäten und Bonitätsbewertungen

Ein Konto wird oft dauerhaft gesperrt, was die zukünftige Teilnahme an legalen Glücksspielen erheblich erschwert. Zudem können negative Einträge in Bonitätsdatenbanken entstehen, die die Kreditwürdigkeit des Nutzers beeinträchtigen. Das kann Auswirkungen auf die Aufnahme von Krediten oder andere Finanztransaktionen haben, insbesondere wenn im Zusammenhang mit illegalen Aktivitäten Zahlungsrückstände bestehen.

Verfahrensrechte und Pflichten bei einer Kontosperrung

Widerspruchsmöglichkeiten und Beschwerdeverfahren

Nutzer haben grundsätzlich das Recht, gegen eine Kontosperrung Widerspruch einzulegen. Dabei sollten sie schriftlich und unter Angabe aller relevanten Belege ihre Sichtweise darlegen. Bei Ablehnung besteht die Möglichkeit, eine Beschwerde beim Anbieter einzureichen oder den Rechtsweg zu beschreiten. Es ist empfehlenswert, sich bei Unsicherheiten an einen Fachanwalt für Glücksspielrecht zu wenden, um die eigenen Rechte effektiv durchzusetzen.

Pflichten zur Nachweiserbringung und Identitätsprüfung

Im Rahmen der Regulierung sind Nutzer verpflichtet, ihre Identität nachzuweisen. Bei Sperrungen kann die Plattform die Vorlage eines Ausweises, eines Adressnachweises oder weiterer Unterlagen verlangen. Diese Maßnahmen dienen der Verhinderung von Geldwäsche, Betrug und der Einhaltung gesetzlicher Vorgaben. Die Fristen hierfür variieren, meistens sind jedoch innerhalb von 14 Tagen entsprechende Dokumente einzureichen.

Fristen und Frustrationsgrenzen bei rechtlichen Auseinandersetzungen

Rechtliche Verfahren gegen Kontosperrungen können langwierig sein. Nutzer sollten sich bewusst sein, dass Fristen zur Einlegung von Widersprüchen oder Beschwerden unterschiedlich sind, häufig zwischen zwei Wochen bis drei Monaten. Bei Verzögerungen empfiehlt es sich, die Kommunikation nachweislich zu dokumentieren und gegebenenfalls eine rechtliche Beratung in Anspruch zu nehmen, um keine Fristen zu versäumen.

Praktische Fallbeispiele und Gerichtsentscheidungen

Gerichtliche Urteile zu illegalen Kontosperrungen

In einigen Fällen haben deutsche Gerichte entschieden, dass Kontosperrungen ohne ausreichenden Nachweis auf illegalen Aktivitäten unrechtmäßig sind. Beispielsweise hat das Berliner Verwaltungsgericht im Jahr 2022 in einem Urteil festgestellt, dass Anbieter Nutzer ohne konkreten Betrugs- oder Manipulationsnachweis nicht pauschal sperren dürfen. Solche Urteile stärken die Rechte der Nutzer und fordern klare Beweisführung seitens der Anbieter.

Relevante Präzedenzfälle und deren Bedeutung

Fall Datum Entscheidung Bedeutung
Urteil des OVG Münster – Sperrung ohne Beweis 2023 Sperrung ohne hinreichenden Grund ist rechtswidrig Plädoyer für klare Beweisführung bei Kontosperrungen
Verwaltungsgericht Berlin – Widerspruch gegen Kontosperrung 2022 Erfolg für Nutzer bei Verstößen gegen Transparenzpflichten Stärkung von Nutzerrechten bei unrechtmäßigen Sperren

Lehren aus konkreten Rechtsprechungen für Nutzer und Anbieter

Diese Fälle zeigen, dass eine rechtlich korrekte und transparente Beweisführung bei Kontosperrungen unerlässlich ist. Nutzer sollten ihre Rechte kennen und bei unbegründeter Sperrung rechtzeitig Widerspruch einlegen. Anbieter dagegen sind gut beraten, ihre Verfahren rechtskonform zu gestalten, um Gerichtsentscheidungen zu vermeiden und das Vertrauen ihrer Nutzer zu sichern.

Uncategorized

Leave a Comment

Your email address will not be published. Required fields are marked *