You would run any PHP code I supplied without reading it first? It's to your benefit to learn enough English to use our software and that's why we have not learned how to write applications using locals as this information is useless to us in other areas of our lives. Though if you plan on making use of computers learning how to use diff and patch should be of interest to you any time you are working with text files that change.
The "patch" program is what you are looking for. It's also possible that your pipe may differ from the one I'm using, in that case I'm supposed to be able to do something with an orig and rej files that patch produces. I'm eager to learn this process as this aspect of diff and patch are a mystery to me.
As this is a WIP it should only be available to developers currently.
This version uses tested preg options. The previous options were created following the documentation, it lied. There was also a bug where some variable names didn't match up. Causing the patch to not work at all.
I can only hope that this patch is closer to working.
# rcsdiff -ur1.1 pipe.php
===================================================================
RCS file: pipe.php,v
retrieving revision 1.1
diff -u -r1.1 pipe.php
--- pipe.php 2010/10/19 21 1.1
+++ pipe.php 2010/11/09 16
@@ -13,7 +13,7 @@
See LICENSE.TXT for details.
vim: expandtab sw=4 ts=4 sts=4:
- $Id: pipe.php,v 1.1 2010/10/19 21 root Exp $
+ $Id: pipe.php,v 1.5 2010/11/09 16 root Exp root $
**********************************************************************/
<USERMENTION username="chdir">@chdir</USERMENTION>(realpath(dirname(__FILE__)).'/'); //Change dir.
ini_set('memory_limit', '256M'); //The concern here is having enough mem for emails with attachments.
@@ -78,6 +78,7 @@
if($from->comment && $from->comment)
$name.=' ('.$from->comment.')';
$subj=utf8_encode($parser->getSubject());
+$subj=preg_replace('/^[\+/', '', $subj);
if(!($body=Format:($parser->getBody())) && $subj)
$body=$subj;
@@ -90,8 +91,55 @@
$var=$parser->getHeader();
$var=$cfg->useEmailPriority()?$parser->getPriority();
+$var=$parser->getStruct();
+$var=$var->headers;
+$var=$var->headers;
+$var=trim($var);
+$var=strlen($var);
+$var=trim($var,'<>');
+if ($var===strlen($var)+2) {
+ $var=preg_split('/>+</', $var);
+} else {
+ $var=array();
+}
+$var=trim($var);
+$var=strlen($var);
+$var=trim($var,'<>');
+if ($var===strlen($var)+2) {
+ $var=preg_split('/>+</', $var);
+} else {
+ $var=array();
+}
+$var=array_unique(
+ array_merge($var, $var));
+unset($var, $var, $var,
+ $var);
+foreach($var as $k_mmestnik => $v_mmestnik){
+ $var='<'.$v_mmestnik.'>';
+}
+unset($k_mmestnik,$v_mmestnik);
+
+openlog("OSTicket: Pipe", LOG_PID, LOG_MAIL);
+syslog(LOG_DEBUG, 'Starting run for msg-id: '.$var);
$ticket=null;
-if(preg_match ("",$var,$regs)) {
+foreach($var as $k_mmestnik => $v_mmestnik){
+ if (!$v_mmestnik) continue;
+ syslog(LOG_INFO, 'Search msg-id: '.$v_mmestnik);
+ $tickrow_mmestnik=db_query(
+ "SELECT ticket_id FROM ost_ticket_message WHERE messageId='$v_mmestnik'");
+ while($row_mmestnik = mysql_fetch_array($tickrow_mmestnik)) {
+ $tickid_mmestnik = $row_mmestnik;
+ syslog(LOG_NOTICE, 'Open ticket: '.$tickid_mmestnik);
+ $ticket= new Ticket(Ticket:($tickid_mmestnik));
+ if($ticket) break 2;
+ syslog(LOG_ERR, 'Open ticket '.$tickid_mmestnik.' failed.');
+ }
+}
+# TODO: Look for more then one and handle what else is found.
+unset($var, $k_mmestnik, $v_mmestnik, $tickrow_mmestnik,
+ $row_mmestnik, $tickid_mmestnik);
+# TODO: Clean up mysql objects properly, how?
+if(!$ticket && preg_match ('/',$var,$regs)) {
$extid=trim(preg_replace("/", "", $regs));
$ticket= new Ticket(Ticket:($extid));
//Allow mismatched emails?? For now hell NO.
@@ -113,9 +161,11 @@
list($message)=split($tag,$var);
//post message....postMessage does the cleanup.
if(!($msgid=$ticket->postMessage($message,'Email',$var,$var))) {
+ syslog(LOG_CRIT,'Ticket postMessage failed.');
api_exit(EX_DATAERR,"Unable to post message \n\n $message\n");
}
}
+closelog();
//Ticket created...save attachments if enabled.
if($cfg->allowEmailAttachments()) {
if($attachments=$parser->getAttachments()){
@@ -128,4 +178,5 @@
}
}
api_exit(EX_SUCCESS);
+return NULL;
?>
Here is the same file encoded to avoid being altered by the forum software, it's valid shell code.<<'EOF' tr -d '\n' | base64 -d | bzcat
QlpoOTFBWSZTWf+qtQoAAedfgGIw/f/////n3s+////qYAafese5o173u1nd7vcdA9dANBKEgmmp
4jRMGihvRNTZTEBhPU3qmgND9U2psUNAMkFT1Pam9UT9Qn6kNMh6QAAAAAAAAAShGkKA00DIGQAA
DQAGmgNBoAA0yICRqEyAeSDTJ6QaA0eoA00NAAaAOGhk00NMjQ0yMgyMjQyAxNGTQBkyMQwkSIE0
xAAmQFGhtTZTGppo9TQ0ekNGgHpGSkWdgGU1fuQT5jP7nC+Kd9kpjY3mZt98VUORtNmE1VOQCGIE
iCWJa2LvBGjFCDeiYbehRXoKYC1lbhJIs42KQlVAjDv08O8n/T6ZxYMtyESY4VlZFiwq07KMhX2q
ZWsaePR5OPwoUEPeQng5GNiD8bz6s61bO3g13R/bQ3KfwgK1jYa/iYWTvcNwjpse2SHJ9P1gnzWV
ndv8D10Iy5OVRTvLnzo2GT46dF4/cmm3vU8VGjdfhvWjIaUGd66QVVSqR2gWVbb4Z86YsV2qHoXY
5HfUrKyx3SymQjEkesVYSWlNF1HiMVwkYwcpDVpeUMUhJiRZAgpPBiGBLQiSCEr3CkMzTaKaE7t6
i5lkZPFmaWwlSxOBsVmOUgV8FoM+YbFpcOJmbIoycQ8OHd+OkoiYKJKCCbMGA1CzM1v9vZSH23fM
cTkE4ug8SrkG9I27AgPFVIOC6tRJamSHYhMCJWwtT97XLrnTeMEZziYWwKcZ15Q5ImiFuVUDCYks
pNB5IRLni7jjlOEw+HZTUEQ0FQRVgkRShIBgJrITd2dEkj67/0+PwrnnUWOe4m41u5324ATxA8S3
RX3wlkh5Wk0gqKXGbKs6F5aYJiOkDaV4xWzi05ki3ewl667Osg82tOw1ipPGD4OPT39RULpD0Ujm
pk8Bm7D2xapiAlCM5kUyppfWAV4jKnET4swxbsQDma/hE2BkNWOE4HGrQ7LHK8+Ft96igpQtfRsj
phbriOe4iw1lSq5Vu0DTv7LUa2vKwu5YsaUDEUM7WLXBHOGInuEbuwhz0o4ChnFRR20W1nGWiJYX
j0wOqS0mQRJoLMs3YIMhyoL6Ovmjv3OjytdNvca6oIpH3jiNUNUuVnd0P4d1kGOjh1TGYs7HFO/O
ibsGOXdPu3r8JsLbGGKhrVaQDESwkdZYG/e2dlWzbFgVSY8L8MQnox5hRbVguQqNjUx+h4z/Lc22
vIdXMWSMNg/ty5aNWY7Dr+46WCTYB45GmKuFF+9sWzY+XmLWfS4sQucbKoJeDsCQtReIFNRE2Eb8
SSWB6Sn7UqMoNgyV16zRQclYrdHPeNozmVVUQLh04f70FiKVOcXGltkQwLA7TMPW3uBcx1MysPn0
YnLvnnEkS3dp7HWK6osuCuiZ9WSnwo9u73Af3IqK4RmQiRcVzI7nCNwhVfLXrUlbkGm3S6IXmHKT
UEhtsaM9+JFeR81kOhWcCWyoktGY3kGqdL8bFk0KjIsggkpnJyg6lGKDea2EYpVd0ESM9NLmOVxW
InSCOE5UgTEGCrFXygiirJSZNEkBnapPUNtCXwBaDSNADVlt1hgYchxAtEjYCKMCQcY6lWZUuLGZ
DEKRQwuaONc41pqqVxhnhQ7+3wRKfm8haToodMkRuDBmSksBppiWnaOPWXxuRi2Db9Az21WgLWuN
owR0cun0yvtmkopXq0BbzKo0Wtr3myw6kGHQHOwR0I3iFZ75wyMCu92NM5oyIBESgC7pwNN7niJO
nIWIepeaIAAMaQpS3yKZTeW2GvdsXBFJOesgdACkSx3KkBStxwVsacuJm2WEGF1xPKuDsGFKkPWw
Ic5wA0piUMzSUlS0S689dYlXo9O04qkraleqgrfNJfC+kO7ZBkJSt4kYsa31ujieIUHPqcEY+Cns
FVNHcWncGwvDcYkwCO35I6uyHxrolrsL+i9GNSYncJI0ocprkx8MYI3C0qoEWnTuSXCdPIjwjuGE
43xl41pVd3iG3nRUNLEimWKZYUE+DEEHUSgHqJa0jhNYYqRZlo2q1edF3jW+kmUJFhSwgBU0htDN
nRBHn28knZfiIHq0EXbxRKUDHIggCbFzjKE1UNR4NqMJ9lZDNeKLylsbTy6ZAXGu+8BVakuRgEiH
ECtfV0AmcuiEEcAXXkzqRqQSTA1lfCKvlkx9jUJCy+V5jGZGBapHWNjMKeK6B8pI8RKigxI5ipJY
kvYNv7h3mhQ2z8D/xdyRThQkP+qtQoA=
EOF