| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 | 
							- <?php
 - # $Id: FetchmailHandler.php 1824 2016-02-04 22:30:06Z christian_boltz $
 - 
 - /**
 -  * Handler for fetchmail jobs
 -  */
 - class FetchmailHandler extends PFAHandler {
 - 
 -     protected $db_table = 'fetchmail';
 -     protected $id_field = 'id';
 -     protected $domain_field = 'domain';
 -     protected $order_by = 'domain, mailbox';
 - 
 - 
 -     protected function initStruct() {
 -         $src_auth_options = array('password','kerberos_v5','kerberos','kerberos_v4','gssapi','cram-md5','otp','ntlm','msn','ssh','any');
 -         $src_protocol_options = array('POP3','IMAP','POP2','ETRN','AUTO');
 - 
 -         $extra = Config::intbool('fetchmail_extra_options');
 - 
 -         $this->struct=array(
 -             # field name                allow       display in...   type    $PALANG label                     $PALANG description                 default / options / ...
 -             #                           editing?    form    list
 -             'id'            => pacol(   0,          0,      1,      'num' , ''                              , ''                                , '', array(), 0, 1),
 -             'domain'        => pacol(   0,          0,      1,      'text', ''                              , ''                                ),
 -             'mailbox'       => pacol(   1,          1,      1,      'enum', 'pFetchmail_field_mailbox'      , 'pFetchmail_desc_mailbox'         ), # mailbox list
 -             'src_server'    => pacol(   1,          1,      1,      'text', 'pFetchmail_field_src_server'   , 'pFetchmail_desc_src_server'      ),
 -             'src_auth'      => pacol(   1,          1,      1,      'enum', 'pFetchmail_field_src_auth'     , 'pFetchmail_desc_src_auth'        , '', $src_auth_options),
 -             'src_user'      => pacol(   1,          1,      1,      'text', 'pFetchmail_field_src_user'     , 'pFetchmail_desc_src_user'        ),
 -             'src_password'  => pacol(   1,          1,      0,      'b64p', 'pFetchmail_field_src_password' , 'pFetchmail_desc_src_password'    ),
 -             'src_folder'    => pacol(   1,          1,      1,      'text', 'pFetchmail_field_src_folder'   , 'pFetchmail_desc_src_folder'      ),
 -             'poll_time'     => pacol(   1,          1,      1,      'num' , 'pFetchmail_field_poll_time'    , 'pFetchmail_desc_poll_time'       , 10 ),
 -             'fetchall'      => pacol(   1,          1,      1,      'bool', 'pFetchmail_field_fetchall'     , 'pFetchmail_desc_fetchall'        ),
 -             'keep'          => pacol(   1,          1,      1,      'bool', 'pFetchmail_field_keep'         , 'pFetchmail_desc_keep'            ),
 -             'protocol'      => pacol(   1,          1,      1,      'enum', 'pFetchmail_field_protocol'     , 'pFetchmail_desc_protocol'        , '', $src_protocol_options),
 -             'usessl'        => pacol(   1,          1,      1,      'bool', 'pFetchmail_field_usessl'       , 'pFetchmail_desc_usessl'          ),
 -             'sslcertck'     => pacol(   1,          1,      1,      'bool', 'pFetchmail_field_sslcertck'    , ''                                ),
 -             'sslcertpath'   => pacol(   $extra,     $extra, $extra, 'text', 'pFetchmail_field_sslcertpath'  , ''                                ),
 -             'sslfingerprint'=> pacol(   $extra,     $extra, $extra, 'text', 'pFetchmail_field_sslfingerprint',''                                ),
 -             'extra_options' => pacol(   $extra,     $extra, $extra, 'text', 'pFetchmail_field_extra_options', 'pFetchmail_desc_extra_options'   ),
 -             'mda'           => pacol(   $extra,     $extra, $extra, 'text', 'pFetchmail_field_mda'          , 'pFetchmail_desc_mda'             ),
 -             'date'          => pacol(   0,          0,      1,      'text', 'pFetchmail_field_date'         , 'pFetchmail_desc_date'            , 1 ),
 -             'returned_text' => pacol(   0,          0,      1,      'text', 'pFetchmail_field_returned_text', 'pFetchmail_desc_returned_text'   ),
 -             'active'        => pacol(   1,          1,      1,      'bool', 'active'                        , ''                                , 1 ),
 -             'created'       => pacol(   0,          0,      0,      'ts',   'created'                       , ''                                ),
 -             'modified'      => pacol(   0,          0,      1,      'ts',   'last_modified'                 , ''                                ),
 -         );
 - 
 -         # get list of mailboxes (for currently logged in user)
 -         $handler = new MailboxHandler(0, $this->admin_username);
 -         $handler->getList('1=1');
 -         $this->struct['mailbox']['options'] = array_keys($handler->result);
 -     }
 - 
 -     protected function initMsg() {
 -         $this->msg['error_already_exists'] = 'fetchmail_already_exists';
 -         $this->msg['error_does_not_exist'] = 'fetchmail_does_not_exist';
 -         $this->msg['confirm_delete'] = 'confirm_delete_fetchmail';
 - 
 -         if ($this->new) {
 -             $this->msg['logname'] = 'create_fetchmail';
 -             $this->msg['store_error'] = 'pFetchmail_database_save_error';
 -             $this->msg['successmessage'] = 'pFetchmail_database_save_success';
 -         } else {
 -             $this->msg['logname'] = 'edit_fetchmail';
 -             $this->msg['store_error'] = 'pFetchmail_database_save_error';
 -             $this->msg['successmessage'] = 'pFetchmail_database_save_success';
 -         }
 -     }
 - 
 -     public function webformConfig() {
 -         return array(
 -             # $PALANG labels
 -             'formtitle_create' => 'pMenu_fetchmail',
 -             'formtitle_edit' => 'pMenu_fetchmail',
 -             'create_button' => 'pFetchmail_new_entry',
 - 
 -             # various settings
 -             'required_role' => 'admin',
 -             'listview' => 'list.php?table=fetchmail',
 -             'early_init' => 0,
 -             'prefill'       => array('mailbox'),
 -         );
 -     }
 - 
 -     protected function domain_from_id() {
 -         # do nothing, setmore() does the work
 -     }
 - 
 -     protected function setmore($values) {
 -         # set domain based on the target mailbox
 -         if ($this->new || isset($values['mailbox']) ) {
 -             list(/*NULL*/,$domain) = explode('@', $values['mailbox']);
 -             $this->values['domain'] = $domain;
 -             $this->domain = $domain;
 -         }
 -     }
 - 
 -     protected function validate_new_id() {
 -         # auto_increment - any non-empty ID is an error
 -         if ($this->id != '') {
 -             $this->errormsg[$this->id_field] = 'auto_increment value, you must pass an empty string!';
 -             return false;
 -         }
 - 
 -         return true;
 -     }
 - 
 - 
 - 
 -     /**
 -      *  @return true on success false on failure
 -      */
 -     public function delete() {
 -         if ( ! $this->view() ) {
 -             $this->errormsg[] = Config::lang($this->msg['error_does_not_exist']);
 -             return false;
 -         }
 - 
 -         db_delete($this->db_table, $this->id_field, $this->id);
 - 
 -         db_log ($this->id, 'delete_fetchmail', $this->result['id']);
 -         $this->infomsg[] = Config::Lang_f('pDelete_delete_success', $this->result['src_user'] . ' -> ' . $this->result['mailbox']);
 - 
 -         return true;
 -     }
 - 
 - 
 -     /*
 -      * validate src_server - must be non-empty and survive check_domain()
 -      */
 -     protected function _validate_src_server($field, $val) {
 -         if ($val == '') {
 -             $msg = Config::Lang('pFetchmail_server_missing');
 -         } else {
 -             $msg = check_domain($val);
 -         }
 - 
 -         if ($msg == '') {
 -             return true;
 -         } else {
 -             $this->errormsg[$field] = $msg;
 -             return false;
 -         }
 -     }
 - 
 -     /*
 -      * validate src_user and src_password - must be non-empty
 -      * (we can't assume anything about valid usernames and passwords on remote
 -      * servers, so the validation can't be more strict)
 -      */
 -     protected function _validate_src_user($field, $val) {
 -         if ($val == '') {
 -             $this->errormsg[$field] = Config::lang('pFetchmail_user_missing');
 -             return false;
 -         }
 -         return true;
 -     }
 -     protected function _validate_src_password($field, $val) {
 -         if ($val == '') {
 -             $this->errormsg[$field] = Config::lang('pFetchmail_password_missing');
 -             return false;
 -         }
 -         return true;
 -     }
 - 
 -     /*
 -      * validate poll interval - must be numeri and > 0
 -      */
 -     protected function _validate_poll_time($field, $val) {
 -         # must be > 0
 -         if ($val < 1) {
 -             $this->errormsg[$field] = Config::Lang_f('must_be_numeric_bigger_than_null', $field);
 -             return false;
 -         }
 -         return true;
 -     }
 - 
 - }
 - 
 - /* vim: set expandtab softtabstop=4 tabstop=4 shiftwidth=4: */
 
 
  |