From b95dcb5a001ab267e50a5af1c1ff5e696cdccf09 Mon Sep 17 00:00:00 2001 From: Retro_Guy Date: Wed, 17 Mar 2021 18:28:41 -0700 Subject: [PATCH] Properly check charset when posting with newsreader via SSL --- Rocksolid_Light/rocksolid/newsportal.php | 8 ++++++-- Rocksolid_Light/rslight/scripts/rslight-lib.php | 15 ++++++++++++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Rocksolid_Light/rocksolid/newsportal.php b/Rocksolid_Light/rocksolid/newsportal.php index 6cb5ae8..9cc257a 100644 --- a/Rocksolid_Light/rocksolid/newsportal.php +++ b/Rocksolid_Light/rocksolid/newsportal.php @@ -1275,9 +1275,13 @@ function get_date_interval($value) { return $variance; } -function get_search_snippet($body, $content_type) { +function get_search_snippet($body, $content_type='') { $body = quoted_printable_decode($body); - $mysnippet = recode_charset($body, $content_type, "utf8"); + if($content_type !== '') { + $mysnippet = recode_charset($body, $content_type, "utf8"); + } else { + $mysnippet = $body; + } if($bodyend=strrpos($mysnippet, "\n---\n")) { $mysnippet = substr($mysnippet, 0, $bodyend); } else { diff --git a/Rocksolid_Light/rslight/scripts/rslight-lib.php b/Rocksolid_Light/rslight/scripts/rslight-lib.php index 5021e81..4534bf4 100755 --- a/Rocksolid_Light/rslight/scripts/rslight-lib.php +++ b/Rocksolid_Light/rslight/scripts/rslight-lib.php @@ -1115,7 +1115,20 @@ $date_i,$mid_i,$references_i,$bytes_i,$lines_i,$xref_i,$body) { $dbh = null; } if($CONFIG['article_database'] == '1') { - $this_snippet = get_search_snippet($body, 'UTF8'); + foreach($body as $line) { + if(trim($line) == "") { + break; + } + if(stripos($line, "Content-Type: ") === 0) { + preg_match('/.*charset=.*/', $line, $te); + $content_type = explode("Content-Type: text/plain; charset=", $te[0]); + } + } + if(isset($content_type[1])) { + $this_snippet = get_search_snippet($body, $content_type[1]); + } else { + $this_snippet = get_search_snippet($body); + } $article_dbh = article_db_open($spooldir.'/'.$nntp_group.'-articles.db3'); $article_sql = 'INSERT INTO articles(newsgroup, number, msgid, date, name, subject, article, search_snippet) VALUES(?,?,?,?,?,?,?,?)'; $article_stmt = $article_dbh->prepare($article_sql);