0, 'error' => 'Kein Server ausgewählt' ] ) ); } if ( empty( $idLong ) ){ die( json_encode( [ 'status' => 0, 'error' => 'Keine Identität ausgewählt' ] ) ); } if ( empty( $_REQUEST['eventId'] ) || empty( $_REQUEST['usage'] ) ){ die( json_encode( [ 'status' => 0, 'error' => 'Daten unvollständig' ] ) ); } if ( $_REQUEST['usage'] == 'csv' ){ if ( empty( $_REQUEST['count'] ) ){ die( json_encode( [ 'status' => 0, 'error' => 'Daten unvollständig' ] ) ); } $count = (int) $_REQUEST['count']; $limit = $user['settings']['csv_limit'] ?? 100; if ( $count < 0 || $count > $limit ){ die( json_encode( [ 'status' => 0, 'error' => "Ungültige Anzahl (1..{$limit})" ] ) ); } $msg = new ParTCP_Outgoing_Message( $serverLong, $idLong, 'multi-registration' ); $msg->set( 'Event-Id', $_REQUEST['eventId'] ); $msg->set( 'Count', $count ); $response = pas_check_response( $msg->send() ); if ( is_string( $response ) ){ die( json_encode( [ 'status' => 0, 'error' => $response ] ) ); } $codes = $response->get('Lot-Codes'); if ( ! is_array( $codes ) ){ die( json_encode( [ 'status' => 0, 'error' => 'Bei der Kommunikation mit dem Abstimmungsserver ist ein Fehler aufgetreten' ] ) ); } if ( empty( $_REQUEST['eventCode'] ) ){ $eventId = $_REQUEST['eventId']; $server = $_REQUEST['serverName']; $codes = implode( "@{$server}/{$eventId}\n", $codes ) . "@{$server}/{$eventId}"; } else { $eventCode = $_REQUEST['eventCode']; $codes = implode( "@{$eventCode}\n", $codes ) . "@{$eventCode}"; } echo json_encode( [ 'status' => 1, 'file_name' => 'lotcodes-' . basename( $_REQUEST['eventId'] ) . '.csv', 'file_data' => "code\n{$codes}" ] ); exit; } if ( $_REQUEST['usage'] == 'deposit' ){ if ( empty( $_REQUEST['list'] ) ){ die( json_encode( [ 'status' => 0, 'error' => 'Daten unvollständig' ] ) ); } $list = array_map( 'trim', explode( "\n", strtolower( $_REQUEST['list'] ) ) ); $list = array_filter( $list ); $limit = $user['settings']['deposit_limit'] ?? 100; if ( count( $list ) > $limit ){ die( json_encode( [ 'status' => 0, 'error' => "Maximal {$limit} Kennungen erlaubt" ] ) ); } shuffle( $list ); require_once 'lib/ptcp_tools.class.php'; $result = ParTCP_Tools::lotcode_deposit( $serverLong, $idLong, $_REQUEST['eventId'], $list ); if ( ! empty( $response['error'] ) ){ die( json_encode( [ 'status' => 0, 'error' => $response['error'] ] ) ); } $data = "Server: {$serverLong}\n" . "User: {$idLong}\n" . "Event: {$_REQUEST['eventId']}\n" . "Date: " . date('c') . "\n\n"; foreach ( $result as $status => $list ){ if ( $list ){ $data .= "## {$status} ##\n" . implode( "\n", $list ) . "\n\n"; } } echo json_encode( [ 'status' => 1, 'file_name' => 'deposits-' . basename( $_REQUEST['eventId'] ) . '.txt', 'file_data' => $data ] ); exit; } if ( $_REQUEST['usage'] == 'email' ){ if ( empty( $_REQUEST['list'] ) || empty( $user['settings']['smtpHost'] ) || empty( $_REQUEST['password'] ) || empty( $_REQUEST['emailSubject'] ) || empty( $_REQUEST['emailText'] ) ){ die( json_encode( [ 'status' => 0, 'error' => 'Daten unvollständig' ] ) ); } if ( strpos( $_REQUEST['emailText'], '%%' ) === FALSE ){ die( json_encode( [ 'status' => 0, 'error' => 'Platzhalter %% fehlt in E-Mail-Text' ] ) ); } if ( empty( $user['settings']['smtpHost'] ) || empty( $user['settings']['smtpUser'] ) || empty( $user['settings']['smtpPort'] ) ){ die( json_encode( [ 'status' => 0, 'error' => 'Ausgangsserver nicht vollständig konfiguriert' ] ) ); } require_once 'lib/pas_smtp_servers.class.php'; //$smtpServers = new PAS_SMTP_Servers( $pdo ); //$server = $smtpServers->get( $_REQUEST['smtpHost'] ); //if ( empty( $server['name'] ) ){ // die( json_encode( [ 'status' => 0, 'error' => 'Ungültiger SMTP-Server' ] ) ); //} $addresses = explode( "\n", $_REQUEST['list'] ); $addresses = array_filter( array_map( 'trim', $addresses ) ); $addressCount = count( $addresses ); $limit = $user['settings']['email_limit'] ?? 10; if ( $addressCount > $limit ){ die( json_encode( [ 'status' => 0, 'error' => "Maximal {$limit} Adressen erlaubt" ] ) ); } $msg = new ParTCP_Outgoing_Message( $serverLong, $idLong, 'multi-registration' ); $msg->set( 'Event-Id', $_REQUEST['eventId'] ); $msg->set( 'Count', $addressCount ); $response = pas_check_response( $msg->send() ); if ( is_string( $response ) ){ die( json_encode( [ 'status' => 0, 'error' => $response ] ) ); } $codes = $response->get('Lot-Codes'); if ( ! is_array( $codes ) ){ die( json_encode( [ 'status' => 0, 'error' => 'Bei der Kommunikation mit dem Abstimmungsserver ist ein Fehler aufgetreten' ] ) ); } require_once 'lib/smtp_mailer.class.php'; $mailer = new SMTP_Mailer( $user['settings']['smtpHost'], $user['settings']['smtpPort'], $user['settings']['smtpUser'], $_REQUEST['password'], $user['settings']['smtpSecurity'] ?? NULL ); if ( ! empty( $user['settings']['smtpDebug'] ) ){ $mailer->debug = TRUE; } $resultList = []; $suffix = $_REQUEST['eventCode'] ?? "{$_REQUEST['serverName']}/{$_REQUEST['eventId']}"; for ( $i = 0; $i < $addressCount; $i++ ){ $text = str_replace( '%%', "{$codes[ $i ]}@{$suffix}", $_REQUEST['emailText'] ); $result = $mailer->mail( $addresses[ $i ], $_REQUEST['emailSubject'], $text, $user['settings']['smtpFrom'] ?? $user['settings']['smtpUser'] ); if ( $mailer->debug && ! $result ){ $errorCondition = TRUE; } $resultList[] = $addresses[ $i ] . ( $result ? ' OK' : " ERROR {$mailer->lastError}" ); } if ( ! empty( $errorCondition ) ){ die( json_encode( [ 'status' => 0, 'error' => $mailer->protocol ] ) ); } echo json_encode( [ 'status' => 1, 'file_name' => 'mails-sent-' . basename( $_REQUEST['eventId'] ) . '.txt', 'file_data' => implode( "\n", $resultList ) ] ); exit; } die( json_encode( [ 'status' => 0, 'error' => 'Unknown usage' ] ) ); // end of file ajax/generate_lots.php