Mercurial > hg > rc1
comparison plugins/thunderbird_labels/thunderbird_labels.php @ 31:b2d0a9781472
add whitelisting
author | Charlie Root |
---|---|
date | Tue, 13 Mar 2018 13:01:26 -0400 |
parents | ea061c743982 |
children | 05c4c32948af |
comparison
equal
deleted
inserted
replaced
30:7498e7cacd71 | 31:b2d0a9781472 |
---|---|
43 $this->include_script('tb_label.js'); | 43 $this->include_script('tb_label.js'); |
44 $this->add_hook('messages_list', array($this, 'read_flags')); | 44 $this->add_hook('messages_list', array($this, 'read_flags')); |
45 $this->add_hook('message_load', array($this, 'read_single_flags')); | 45 $this->add_hook('message_load', array($this, 'read_single_flags')); |
46 $this->add_hook('template_object_messageheaders', array($this, 'color_headers')); | 46 $this->add_hook('template_object_messageheaders', array($this, 'color_headers')); |
47 $this->add_hook('render_page', array($this, 'tblabelpopup')); | 47 $this->add_hook('render_page', array($this, 'tblabelpopup')); |
48 $this->add_hook('message_outgoing_headers', array($this, 'whiteMessage')); | |
49 # The above hook is described as 'Depracated', but no alternative for | |
50 # non-intrusive access to the headers is available | |
48 $this->include_stylesheet($this->local_skin_path() . '/tb_label.css'); | 51 $this->include_stylesheet($this->local_skin_path() . '/tb_label.css'); |
49 | 52 |
50 $this->name = get_class($this); | 53 $this->name = get_class($this); |
51 # -- additional TB flags | 54 # -- additional TB flags |
52 $this->add_tb_flags = array(); | 55 $this->add_tb_flags = array(); |
62 # ends up with display: none??? | 65 # ends up with display: none??? |
63 # Bother, missed it, it's before this.container.show | 66 # Bother, missed it, it's before this.container.show |
64 # Afeter ul.appendnd -- inside menu.show on 307 | 67 # Afeter ul.appendnd -- inside menu.show on 307 |
65 # 567? Yes -- that's calling 'hide', but overriding | 68 # 567? Yes -- that's calling 'hide', but overriding |
66 # doesn't fix :-( | 69 # doesn't fix :-( |
67 #rcube::write_log('lab','add_button'); | |
68 $this->add_button( | 70 $this->add_button( |
69 array( | 71 array( |
70 #'command' => 'plugin.thunderbird_labels.rcm_tb_label_submenu', | 72 #'command' => 'plugin.thunderbird_labels.rcm_tb_label_submenu', |
71 'name' => 'tblabellink', | 73 'name' => 'tblabellink', |
72 'id' => 'tblabelpopuplink', | 74 'id' => 'tblabelpopuplink', |
85 ); | 87 ); |
86 | 88 |
87 // JS function "set_flags" => PHP function "set_flags" | 89 // JS function "set_flags" => PHP function "set_flags" |
88 $this->register_action('plugin.thunderbird_labels.set_flags', array($this, 'set_flags')); | 90 $this->register_action('plugin.thunderbird_labels.set_flags', array($this, 'set_flags')); |
89 | 91 |
92 rcube::write_log('lab','set_flags registered'); | |
90 | 93 |
91 if (method_exists($this, 'require_plugin') | 94 if (method_exists($this, 'require_plugin') |
92 && in_array('contextmenu', $this->rc->config->get('plugins')) | 95 && in_array('contextmenu', $this->rc->config->get('plugins')) |
93 && $this->require_plugin('contextmenu') | 96 && $this->require_plugin('contextmenu') |
94 && $this->rc->config->get('tb_label_enable_contextmenu')) | 97 && $this->rc->config->get('tb_label_enable_contextmenu')) |
323 $flag = is_numeric("$flagvalue")? $flagname:$flagvalue;// for compatibility with < 0.5.4 | 326 $flag = is_numeric("$flagvalue")? $flagname:$flagvalue;// for compatibility with < 0.5.4 |
324 $flag = strtolower($flag); | 327 $flag = strtolower($flag); |
325 if (preg_match('/^\$?label/', $flag)) | 328 if (preg_match('/^\$?label/', $flag)) |
326 { | 329 { |
327 $flag_no = preg_replace('/^\$?label/', '', $flag); | 330 $flag_no = preg_replace('/^\$?label/', '', $flag); |
328 #rcube::write_log($this->name, "Single message Flag: ".$flag." Flag_no:".$flag_no); | 331 rcube::write_log($this->name, "Single message Flag: ".$flag." Flag_no:".$flag_no); |
329 $this->message_tb_labels[] = (int)$flag_no; | 332 $this->message_tb_labels[] = (int)$flag_no; |
330 } | 333 } |
331 } | 334 } |
332 } | 335 } |
333 # -- no return value for this hook | 336 # -- no return value for this hook |
545 </div>'; | 548 </div>'; |
546 $this->rc->output->add_gui_object('tblabelpopup_obj', 'tblabelpopup'); | 549 $this->rc->output->add_gui_object('tblabelpopup_obj', 'tblabelpopup'); |
547 #rcube::write_log('lab',"tblp $out"); | 550 #rcube::write_log('lab',"tblp $out"); |
548 $this->rc->output->add_footer($out); | 551 $this->rc->output->add_footer($out); |
549 } | 552 } |
553 | |
554 public static function whiteMessage($data) { | |
555 require_once 'Mail/RFC822.php'; | |
556 $hdrs = $data['headers']; | |
557 $to = $hdrs['To']; | |
558 $cc = $hdrs['Cc']; | |
559 $addrs = Mail_RFC822::parseAddressList($to); | |
560 if ($cc) { | |
561 foreach (Mail_RFC822::parseAddressList($cc) as $addr) { | |
562 $addrs[]=$addr; | |
563 } | |
564 } | |
565 #rcube::write_log('lab',"cc: ".print_r($cca,true)); | |
566 $wp = popen("/usr/local/bin/makeWhite.sh >>/var/log/white.log 2>&1",'w'); | |
567 foreach ($addrs as $addr) { | |
568 fwrite($wp,$addr->mailbox.'@'.$addr->host."\n"); | |
569 } | |
570 fclose($wp); | |
571 return $data; | |
572 } | |
573 | |
550 } | 574 } |
551 | 575 |