/** * Commits changes (increases serial by 1) * * @return Array on success, string on error */ public static function commit() { // do some checks first $pdns_version = trim(shell_exec("sudo /usr/bin/pdns_control version 2>&1")); if (!preg_match('/^[0-9,\\.]+$/', $pdns_version)) { if (preg_match('/\\[sudo\\] password/', $pdns_version)) { return "Unable to run 'sudo /usr/bin/pdns_control'. Is it defined in sudoers file?"; } else { return $pdns_version; } } $commited = array(); $c = new Criteria(); $c->add(AuditPeer::OBJECT, 'Record'); $c->addGroupByColumn(AuditPeer::DOMAIN_ID); $c->add(AuditPeer::CREATED_AT, date("Y-m-d H:i:s", MyTools::getLastCommit()), Criteria::GREATER_THAN); foreach (AuditPeer::doSelect($c) as $audit) { $domain = DomainPeer::retrieveByPK($audit->getDomainId()); $commited[] = $domain->getName(); // get SOA record $c = new Criteria(); $c->add(RecordPeer::DOMAIN_ID, $domain->getId()); $c->add(RecordPeer::TYPE, 'SOA'); $SOA = RecordPeer::doSelectOne($c); $temp = explode(" ", $SOA->getContent()); $serial = $temp[2]; $date = substr($serial, 0, 8); $id = substr($serial, 8); // today ? if ($date == date("Ymd")) { $id++; if (strlen($id) == 1) { $id = "0" . $id; } $serial = $date . $id; } else { $serial = date("Ymd") . "01"; } if ($serial >= 4294967295) { continue; } // don't allow >= 32bit unsigned $SOA->setContent(implode(" ", array($temp[0], $temp[1], $serial))); $SOA->save(); } if ($commited) { SettingPeer::setValue('last_commit', time()); sleep(2); if ($also_notify = sfConfig::get('app_default_also-notify')) { foreach ($commited as $domain) { foreach ($also_notify as $host) { exec("sudo /usr/bin/pdns_control notify-host {$domain} {$host}"); } } } } return $commited; }
/** * Sets value for given key name * * @param string $name * @param mixed $value * */ public static function setValue($name, $value) { $c = new Criteria(); $c->add(SettingPeer::NAME, $name); if (!($setting = SettingPeer::doSelectOne($c))) { $setting = new Setting(); $setting->setName($name); } $setting->setValue($value); $setting->save(); }
public static function setByKey($key, $value, PropelPDO $con = null) { $c = new Criteria(); $c->add(SettingPeer::KEY, $key); $s = SettingPeer::doSelectOne($c, $con); if (!$s) { $s = new Setting(); $setting->setKey($key); } $s->setValue($value); return $s->save(); }
/** * Record Type */ public function executeRecordtype() { if (!$this->isPOST()) { $output = array(); if (!($record_type = SettingPeer::getValue('record_type'))) { return $this->renderJson(array("success" => false)); } foreach (unserialize($record_type) as $type => $state) { $output[] = array("id" => $type, "state" => $state); } return $this->renderStore("RecordType", $output); } else { $record_type = array(); foreach ($this->getRequestParameter('record_type') as $type => $state) { if ($state) { $record_type[$type] = 1; } else { $record_type[$type] = 0; } } SettingPeer::setValue('record_type', serialize($record_type)); return $this->renderJson(array("success" => true, "info" => "Record types updated.")); } }
public function executeAnnounce($request) { register_shutdown_function(array($this, "timeout"), $request); $this->encoder = new File_Bittorrent2_Encode(); try { if (!SettingPeer::retrieveByKey('tracker_active')) { throw new limeException('turn-on-tracker', 'Tracker not active'); } $response = $this->response_ok; $this->form = new ClientForm(); $this->form->bind($request->getGetParameters()); if (!$this->form->isValid()) { return $this->doError(implode(';\\n', $this->form->getValidatorSchema()->getMessages())); } $params = $request->getGetParameters(); $params['info_hash'] = unpack('H*', $params['info_hash']); $params['info_hash'] = $params['info_hash'][1]; $params['peer_id'] = $params['peer_id']; $request->setTimeLimit(10); $my_client = ClientPeer::retrieveByParameters($params); $request->setIgnoreUserAbort(true); // semi-transactional now $my_client->updateWithParameters($params, $request); if (!$my_client->isDeleted()) { $my_client->save(); $torrent = $my_client->getTorrent(); $clients = ClientPeer::reap($torrent->getClients()); $request->setIgnoreUserAbort(false); $request->setTimeLimit(20); if (!isset($params['compact'])) { $params['compact'] = TRUE; } if ($params['compact']) { $response['peers'] = ''; } $complete = 0; $incomplete = 0; foreach ($clients as $peer_client) { if ($my_client->getId() != $peer_client->getId() && !$peer_client->isDeleted()) { if ($peer_client->isComplete()) { $complete++; } else { $incomplete++; } if ($params['compact']) { $response['peers'] .= $peer_client->getDict(true); } else { $response['peers'][] = $peer_client->getDict(); } } } } else { $request->setIgnoreUserAbort(false); $request->setTimeLimit(20); unset($response['peers']); // no need to send a stopping peer a list of peers } $response['tracker id'] = $my_client->getTrackerId(); $response['complete'] = $complete; $response['incomplete'] = $incomplete; // return sfView::ERROR; sfConfig::set('sf_web_debug', false); //return $this->renderText(print_r($response,true)); $output = $this->encoder->encode($response); return $this->renderText($output); } catch (Exception $e) { return $this->doError($e . ''); } }
public function performTests() { $settings = $this->getSettings(); if (!$settings['test_sideload']) { $settings['test_sideload'] = $this->testSideload(); SettingPeer::setByKey('test_sideload', true); } }
echo "Table {$table} - changing engine to InnoDB...\n"; $sql = "ALTER TABLE `{$db_name}`.`{$table}` ENGINE = InnoDB"; try { $statement = $connection->prepareStatement($sql); $statement->executeQuery(); } catch (Exception $e) { innoDBError($sql, $e); break; } $upgraded = true; } } // set record_type setting if (!SettingPeer::getValue('record_type')) { echo "Settings->record_type missing, updating...\n"; $types = array("A" => 1, "AAAA" => 0, "AFSDB" => 0, "CERT" => 0, "CNAME" => 1, "DNSKEY" => 0, "DS" => 0, "HINFO" => 0, "KEY" => 0, "LOC" => 0, "MX" => 1, "NAPTR" => 1, "NS" => 1, "NSEC" => 0, "PTR" => 1, "RP" => 0, "RRSIG" => 0, "SOA" => 1, "SPF" => 1, "SSHFP" => 0, "SRV" => 1, "TXT" => 1); SettingPeer::setValue('record_type', serialize($types)); $upgraded = true; } if ($upgraded) { echo "Clearing cache...\n"; passthru(SF_ROOT_DIR . "/symfony cc"); echo "Done.\n"; } else { echo "Your Power DNS GUI is up to date. Nothing to upgrade.\n"; } function innoDBError($sql, $e) { echo $e->getMessage() . "\n\n"; echo "Please make sure 'records' and 'domain' tables engine is set to InnoDB\n\n"; }
public function executeTracker($request) { if ($request->getMethod() != sfRequest::POST) { return; } $form = $this->form = new TrackerForm(); $form->bind($request->getPostParameters()); $user = $this->getUser(); if (!$form->isValid()) { return sfView::ERROR; } $active = $form->getValue('active'); SettingPeer::setByKey('tracker_active', $active); $user->setFlash('notice', 'BitTorrent tracker ' . ($active ? 'on' : 'off')); $this->redirect('@settings'); }
public function configure() { $this->setWidgets(array('active' => new sfWidgetFormSelectRadio(array('choices' => array(1 => 'yes', 0 => 'no'))))); $this->setValidators(array('active' => new sfValidatorInteger(array('required' => true)))); $this->setDefaults(array('active' => SettingPeer::retrieveByKey('tracker_active'))); }
public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME) { $keys = SettingPeer::getFieldNames($keyType); if (array_key_exists($keys[0], $arr)) { $this->setName($arr[$keys[0]]); } if (array_key_exists($keys[1], $arr)) { $this->setValue($arr[$keys[1]]); } }
public static function retrieveByPKs($pks, $con = null) { if ($con === null) { $con = Propel::getConnection(self::DATABASE_NAME); } $objs = null; if (empty($pks)) { $objs = array(); } else { $criteria = new Criteria(); $criteria->add(SettingPeer::NAME, $pks, Criteria::IN); $objs = SettingPeer::doSelect($criteria, $con); } return $objs; }