forked from zer.ooo/web
[wip]
parent
6cf8f4c8ca
commit
81875e455e
@ -0,0 +1,23 @@
|
|||||||
|
# -*- mode: ruby -*-
|
||||||
|
# vi: set ft=ruby :
|
||||||
|
|
||||||
|
Vagrant.configure(2) do |config|
|
||||||
|
config.vm.define "web" do |web|
|
||||||
|
web.vm.box = "ubuntu/wily64"
|
||||||
|
web.vm.network "private_network", ip: "192.168.50.4"
|
||||||
|
web.vm.provision :shell, inline: <<installphp
|
||||||
|
add-apt-repository -y ppa:ondrej/php >/dev/null
|
||||||
|
apt-get -qq update 2>/dev/null
|
||||||
|
apt-get -qq install php7.0-cli php7.0-sqlite3 2>/dev/null >/dev/null;
|
||||||
|
start-stop-daemon -bS --quiet --make-pidfile --pidfile /var/run/zerooo.pid --startas /bin/bash -- -c "exec php -S 0:8888 -t /vagrant/public/ /vagrant/public/index.php > /var/log/zerooo.log 2>&1";
|
||||||
|
installphp
|
||||||
|
web.vm.network "forwarded_port", guest: 8888, host: 8888
|
||||||
|
end
|
||||||
|
|
||||||
|
config.vm.define "vpn" do |vpn|
|
||||||
|
vpn.vm.box = "ubuntu/wily64"
|
||||||
|
vpn.vm.network "private_network", ip: "192.168.50.8"
|
||||||
|
vpn.vm.synced_folder "../zer.ooo-server", "/server"
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
@ -0,0 +1,2 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
openssl rsa -in $1 -pubin -pubout -outform DER 2>/dev/null | openssl md5 -c | awk '{print $2}'
|
@ -1,3 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
DIR=$(dirname $(realpath $0));
|
DIR=$(dirname $(realpath $0));
|
||||||
|
cd $DIR/..;
|
||||||
openssl ca -config "$DIR/../etc/openssl.conf" -revoke "$1";
|
openssl ca -config "$DIR/../etc/openssl.conf" -revoke "$1";
|
||||||
|
@ -1,4 +1,13 @@
|
|||||||
body {
|
body {
|
||||||
padding-top: 50px;
|
padding-top: 50px;
|
||||||
padding-bottom: 20px;
|
padding-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-top-alert {
|
||||||
|
margin-top: -15px;
|
||||||
|
border-radius: 0;
|
||||||
|
margin-left: -15px;
|
||||||
|
margin-right: -15px;
|
||||||
|
border-left: 0;
|
||||||
|
border-right: 0;
|
||||||
}
|
}
|
@ -0,0 +1,42 @@
|
|||||||
|
$(function () {
|
||||||
|
var error = $('<div class="alert alert-danger" role="alert"></div>');
|
||||||
|
|
||||||
|
$('.save').click(function () {
|
||||||
|
save(function(){});
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.save-and-sign').click(function () {
|
||||||
|
save(function () {
|
||||||
|
sign();
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
function save(callback) {
|
||||||
|
var fingerprint = $('.server-form').data('fingerprint');
|
||||||
|
|
||||||
|
var data = $('.server-form input').serializeArray();
|
||||||
|
|
||||||
|
$.post('/panel/server/' + fingerprint, data, function (data) {
|
||||||
|
if (!data.success) {
|
||||||
|
$('h2').after(error.text(data.error));
|
||||||
|
}
|
||||||
|
|
||||||
|
callback();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function sign() {
|
||||||
|
var fingerprint = $('.server-form').data('fingerprint');
|
||||||
|
$.post(
|
||||||
|
'/panel/server/sign',
|
||||||
|
{
|
||||||
|
fingerprint: fingerprint
|
||||||
|
},
|
||||||
|
function (data) {
|
||||||
|
if (!data.success) {
|
||||||
|
$('h2').after(error.text(data.error));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
@ -0,0 +1,29 @@
|
|||||||
|
$(function(){
|
||||||
|
var error = $('<div class="alert alert-danger" role="alert"></div>');
|
||||||
|
var success = $('<div class="alert alert-success alert-dismissable" role="alert"></div>');
|
||||||
|
var selected = false;
|
||||||
|
|
||||||
|
$('.revoke').click(function () {
|
||||||
|
selected = $(this).data('name');
|
||||||
|
|
||||||
|
$('.revoke-modal').modal('show');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.revoke-confirm').click(function () {
|
||||||
|
var selectedSnapshot = selected;
|
||||||
|
|
||||||
|
$.post('/panel/certificates/revoke', {
|
||||||
|
name: selectedSnapshot,
|
||||||
|
password: $('.revoke-password').val()
|
||||||
|
}, function(data) {
|
||||||
|
if (data.success) {
|
||||||
|
$('#certificates').after(success.text("Successfully revoked '" + selectedSnapshot + "'"));
|
||||||
|
$('.revoke-modal').modal('hide');
|
||||||
|
} else {
|
||||||
|
$('#revoke-put-error-after-me').after(error.text(data.error));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.revoke-password').val('');
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,14 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Eater\Glim\Handler;
|
||||||
|
|
||||||
|
class CA extends Session
|
||||||
|
{
|
||||||
|
function handle()
|
||||||
|
{
|
||||||
|
return$this->getResponse()
|
||||||
|
->withHeader('Content-Type', 'plain/text')
|
||||||
|
->withHeader('Content-Disposition', 'attachment; filename="ca.crt"')
|
||||||
|
->write(file_get_contents($this->getCore()->getBaseDir() . '/storage/ca/ca.crt'));
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,69 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Created by PhpStorm.
|
||||||
|
* User: eater
|
||||||
|
* Date: 4/6/16
|
||||||
|
* Time: 11:30 PM
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Eater\Glim\Handler\Panel\Certificates;
|
||||||
|
|
||||||
|
use Eater\Glim\Handler\Session;
|
||||||
|
use Eater\Glim\Model\CertificateQuery;
|
||||||
|
use Eater\Glim\Service\CA;
|
||||||
|
use Slim\Http\Response;
|
||||||
|
|
||||||
|
class Revoke extends Session
|
||||||
|
{
|
||||||
|
protected $shouldHaveUser = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Response
|
||||||
|
*/
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
$user = $this->getUser();
|
||||||
|
$name = $this->post('name');
|
||||||
|
$password = $this->post('password');
|
||||||
|
|
||||||
|
$cert = CertificateQuery::create()
|
||||||
|
->filterByName($name)
|
||||||
|
->filterByUser($user)
|
||||||
|
->findOne();
|
||||||
|
|
||||||
|
if ($cert === null) {
|
||||||
|
return $this->json([
|
||||||
|
"success" => false,
|
||||||
|
"error" => 'Certificate with the name "' . $name . '" doesn\'t exist'
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!password_verify($password, $user->getPassword())) {
|
||||||
|
return $this->json([
|
||||||
|
'success' => false,
|
||||||
|
'error' => 'Invalid password'
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var CA $ca
|
||||||
|
*/
|
||||||
|
$ca = $this->get('ca');
|
||||||
|
|
||||||
|
try {
|
||||||
|
$ca->revoke($cert->getCertificate());
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
return $this->json([
|
||||||
|
"success" => false,
|
||||||
|
"error" => $e->getMessage()
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$cert->setRevoked(true);
|
||||||
|
$cert->save();
|
||||||
|
|
||||||
|
return $this->json([
|
||||||
|
"success" => true
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Eater\Glim\Handler\Panel\Servers\Edit;
|
||||||
|
|
||||||
|
use Eater\Glim\Handler\Session;
|
||||||
|
use Eater\Glim\Model\ServerQuery;
|
||||||
|
|
||||||
|
class Action extends Session
|
||||||
|
{
|
||||||
|
protected $shouldHaveSuperuser = true;
|
||||||
|
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
$server = ServerQuery::create()->findOneByFingerprint($this->attr('fingerprint'));
|
||||||
|
|
||||||
|
$server->setFqdn($this->post('fqdn'));
|
||||||
|
$server->setExternalIp($this->post('external-ip'));
|
||||||
|
|
||||||
|
# Details
|
||||||
|
$server->setLocation($this->post('location'));
|
||||||
|
$server->setSpeed($this->post('speed'));
|
||||||
|
|
||||||
|
# Config
|
||||||
|
$server->setInternalIp($this->post('internal-ip'));
|
||||||
|
$server->setNetmask($this->post('netmask'));
|
||||||
|
$server->setPort($this->post('post'));
|
||||||
|
$server->setProtocol($this->post('protocol'));
|
||||||
|
$server->setFirstDns($this->post('first-dns'));
|
||||||
|
$server->setSecondDns($this->post('second-dns'));
|
||||||
|
|
||||||
|
$server->save();
|
||||||
|
|
||||||
|
$this->json([ 'success'=> true ]);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Created by PhpStorm.
|
||||||
|
* User: eater
|
||||||
|
* Date: 4/10/16
|
||||||
|
* Time: 9:30 PM
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Eater\Glim\Handler\Panel\Servers\Edit;
|
||||||
|
|
||||||
|
|
||||||
|
use Eater\Glim\Handler\Session;
|
||||||
|
use Eater\Glim\Model\ServerQuery;
|
||||||
|
|
||||||
|
class Show extends Session
|
||||||
|
{
|
||||||
|
protected $shouldHaveSuperuser = true;
|
||||||
|
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
$server = ServerQuery::create()->findOneByFingerprint($this->attr('fingerprint'));
|
||||||
|
|
||||||
|
if ($server === null) {
|
||||||
|
return $this->getResponse()->withStatus(404);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->render(
|
||||||
|
"panel/servers/edit.html.twig",
|
||||||
|
[
|
||||||
|
'server' => $server
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,50 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Eater\Glim\Handler\Panel\Servers;
|
||||||
|
|
||||||
|
use Eater\Glim\Handler\Session;
|
||||||
|
use Eater\Glim\Model\ServerQuery;
|
||||||
|
use Eater\Glim\Service\CA;
|
||||||
|
use Eater\Glim\Service\Server;
|
||||||
|
use Symfony\Component\Config\Definition\Exception\Exception;
|
||||||
|
|
||||||
|
class Sign extends Session
|
||||||
|
{
|
||||||
|
protected $shouldHaveSuperuser = true;
|
||||||
|
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
/** @var CA $ca */
|
||||||
|
$ca = $this->get('ca');
|
||||||
|
$server = ServerQuery::create()->findOneByFingerprint($this->post('fingerprint'));
|
||||||
|
$publicKey = $server->getPublicKey();
|
||||||
|
|
||||||
|
try {
|
||||||
|
$crt = $ca->signServerKey($publicKey, $server->getFqdn());
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
return $this->json([
|
||||||
|
'success' => false,
|
||||||
|
'error' => $e->getMessage()
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$server->setCertificate($crt);
|
||||||
|
$server->save();
|
||||||
|
|
||||||
|
/** @var Server $serverManager */
|
||||||
|
$serverManager = $this->get('server');
|
||||||
|
|
||||||
|
try {
|
||||||
|
$serverManager->deliverSignedCertificate($server);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
return $this->json([
|
||||||
|
'success' => false,
|
||||||
|
'error' => 'Failed to deliver certificate to server: ' . $e->__toString()
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->json([
|
||||||
|
'success' => true
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,72 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Eater\Glim\Handler\Server;
|
||||||
|
|
||||||
|
use Eater\Glim\Handler\Main;
|
||||||
|
use Eater\Glim\Model\Server;
|
||||||
|
use Eater\Glim\Model\ServerQuery;
|
||||||
|
use Eater\Glim\Service\CA;
|
||||||
|
|
||||||
|
class Register extends Main
|
||||||
|
{
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
|
||||||
|
/** @var CA $ca */
|
||||||
|
$ca = $this->get('ca');
|
||||||
|
|
||||||
|
$publicKey = $this->post('publicKey');
|
||||||
|
$hexSignature = $this->post('signature');
|
||||||
|
$fingerprint = $ca->getFingerprintFromPublicKey($publicKey);
|
||||||
|
|
||||||
|
if (empty($publicKey)) {
|
||||||
|
return $this->bash(false, "no PublicKey was provided\n" . var_export($_POST, true) . "\n" . var_export($_FILES, true));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($hexSignature)) {
|
||||||
|
return $this->bash(false, "no signature was provided\n" . var_export($_POST));
|
||||||
|
}
|
||||||
|
|
||||||
|
$serverQuery = ServerQuery::create();
|
||||||
|
$server = $serverQuery->findOneByFingerprint($fingerprint);
|
||||||
|
|
||||||
|
$signature = hex2bin($hexSignature);
|
||||||
|
|
||||||
|
if ($server !== null) {
|
||||||
|
return $this->bash(false, "Server with this fingerprint already exists, if you want to change IP please use /server/update-ip or regenerate your public key");
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$result = $ca->verify($fingerprint, $signature, $publicKey);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
return $this->bash(false, "Verifying went into error: " . $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($result) {
|
||||||
|
return $this->bash(false, "Signature is erroneous\nSignature: {$hexSignature}\nFingerprint: {$fingerprint}\nOpenSSL: " . openssl_error_string());
|
||||||
|
}
|
||||||
|
|
||||||
|
$ip = $_SERVER['REMOTE_ADDR'];
|
||||||
|
$originalIp = $ip;
|
||||||
|
$fqdn = gethostbyaddr($ip);
|
||||||
|
$ipOfFqdn = gethostbyname($fqdn);
|
||||||
|
|
||||||
|
if ($ip === $ipOfFqdn) {
|
||||||
|
$ip = $fqdn;
|
||||||
|
}
|
||||||
|
|
||||||
|
$server = new Server();
|
||||||
|
$server->setFingerprint($fingerprint);
|
||||||
|
$server->setFqdn($ip);
|
||||||
|
$server->setExternalIp($originalIp);
|
||||||
|
$server->setPublicKey($publicKey);
|
||||||
|
$server->save();
|
||||||
|
|
||||||
|
return $this->bash(true, "Good job, skeleton");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function bash($result, $message)
|
||||||
|
{
|
||||||
|
return $this->getResponse()->write(($result ? 0 : 1) . "\n" . $message);
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,862 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Eater\Glim\Model\Base;
|
||||||
|
|
||||||
|
use \Exception;
|
||||||
|
use \PDO;
|
||||||
|
use Eater\Glim\Model\Server as ChildServer;
|
||||||
|
use Eater\Glim\Model\ServerQuery as ChildServerQuery;
|
||||||
|
use Eater\Glim\Model\Map\ServerTableMap;
|
||||||
|
use Propel\Runtime\Propel;
|
||||||
|
use Propel\Runtime\ActiveQuery\Criteria;
|
||||||
|
use Propel\Runtime\ActiveQuery\ModelCriteria;
|
||||||
|
use Propel\Runtime\Collection\ObjectCollection;
|
||||||
|
use Propel\Runtime\Connection\ConnectionInterface;
|
||||||
|
use Propel\Runtime\Exception\PropelException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base class that represents a query for the 'Server' table.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @method ChildServerQuery orderById($order = Criteria::ASC) Order by the id column
|
||||||
|
* @method ChildServerQuery orderByFqdn($order = Criteria::ASC) Order by the fqdn column
|
||||||
|
* @method ChildServerQuery orderByFingerprint($order = Criteria::ASC) Order by the fingerprint column
|
||||||
|
* @method ChildServerQuery orderByPublicKey($order = Criteria::ASC) Order by the public_key column
|
||||||
|
* @method ChildServerQuery orderByCertificate($order = Criteria::ASC) Order by the certificate column
|
||||||
|
* @method ChildServerQuery orderByLocation($order = Criteria::ASC) Order by the location column
|
||||||
|
* @method ChildServerQuery orderBySpeed($order = Criteria::ASC) Order by the speed column
|
||||||
|
* @method ChildServerQuery orderByExternalIp($order = Criteria::ASC) Order by the external_ip column
|
||||||
|
* @method ChildServerQuery orderByInternalIp($order = Criteria::ASC) Order by the internal_ip column
|
||||||
|
* @method ChildServerQuery orderByNetmask($order = Criteria::ASC) Order by the netmask column
|
||||||
|
* @method ChildServerQuery orderByFirstDns($order = Criteria::ASC) Order by the first_dns column
|
||||||
|
* @method ChildServerQuery orderBySecondDns($order = Criteria::ASC) Order by the second_dns column
|
||||||
|
* @method ChildServerQuery orderByPort($order = Criteria::ASC) Order by the port column
|
||||||
|
* @method ChildServerQuery orderByProtocol($order = Criteria::ASC) Order by the protocol column
|
||||||
|
* @method ChildServerQuery orderByStatus($order = Criteria::ASC) Order by the status column
|
||||||
|
*
|
||||||
|
* @method ChildServerQuery groupById() Group by the id column
|
||||||
|
* @method ChildServerQuery groupByFqdn() Group by the fqdn column
|
||||||
|
* @method ChildServerQuery groupByFingerprint() Group by the fingerprint column
|
||||||
|
* @method ChildServerQuery groupByPublicKey() Group by the public_key column
|
||||||
|
* @method ChildServerQuery groupByCertificate() Group by the certificate column
|
||||||
|
* @method ChildServerQuery groupByLocation() Group by the location column
|
||||||
|
* @method ChildServerQuery groupBySpeed() Group by the speed column
|
||||||
|
* @method ChildServerQuery groupByExternalIp() Group by the external_ip column
|
||||||
|
* @method ChildServerQuery groupByInternalIp() Group by the internal_ip column
|
||||||
|
* @method ChildServerQuery groupByNetmask() Group by the netmask column
|
||||||
|
* @method ChildServerQuery groupByFirstDns() Group by the first_dns column
|
||||||
|
* @method ChildServerQuery groupBySecondDns() Group by the second_dns column
|
||||||
|
* @method ChildServerQuery groupByPort() Group by the port column
|
||||||
|
* @method ChildServerQuery groupByProtocol() Group by the protocol column
|
||||||
|
* @method ChildServerQuery groupByStatus() Group by the status column
|
||||||
|
*
|
||||||
|
* @method ChildServerQuery leftJoin($relation) Adds a LEFT JOIN clause to the query
|
||||||
|
* @method ChildServerQuery rightJoin($relation) Adds a RIGHT JOIN clause to the query
|
||||||
|
* @method ChildServerQuery innerJoin($relation) Adds a INNER JOIN clause to the query
|
||||||
|
*
|
||||||
|
* @method ChildServer findOne(ConnectionInterface $con = null) Return the first ChildServer matching the query
|
||||||
|
* @method ChildServer findOneOrCreate(ConnectionInterface $con = null) Return the first ChildServer matching the query, or a new ChildServer object populated from the query conditions when no match is found
|
||||||
|
*
|
||||||
|
* @method ChildServer findOneById(int $id) Return the first ChildServer filtered by the id column
|
||||||
|
* @method ChildServer findOneByFqdn(string $fqdn) Return the first ChildServer filtered by the fqdn column
|
||||||
|
* @method ChildServer findOneByFingerprint(string $fingerprint) Return the first ChildServer filtered by the fingerprint column
|
||||||
|
* @method ChildServer findOneByPublicKey(string $public_key) Return the first ChildServer filtered by the public_key column
|
||||||
|
* @method ChildServer findOneByCertificate(string $certificate) Return the first ChildServer filtered by the certificate column
|
||||||
|
* @method ChildServer findOneByLocation(string $location) Return the first ChildServer filtered by the location column
|
||||||
|
* @method ChildServer findOneBySpeed(int $speed) Return the first ChildServer filtered by the speed column
|
||||||
|
* @method ChildServer findOneByExternalIp(string $external_ip) Return the first ChildServer filtered by the external_ip column
|
||||||
|
* @method ChildServer findOneByInternalIp(string $internal_ip) Return the first ChildServer filtered by the internal_ip column
|
||||||
|
* @method ChildServer findOneByNetmask(int $netmask) Return the first ChildServer filtered by the netmask column
|
||||||
|
* @method ChildServer findOneByFirstDns(string $first_dns) Return the first ChildServer filtered by the first_dns column
|
||||||
|
* @method ChildServer findOneBySecondDns(string $second_dns) Return the first ChildServer filtered by the second_dns column
|
||||||
|
* @method ChildServer findOneByPort(int $port) Return the first ChildServer filtered by the port column
|
||||||
|
* @method ChildServer findOneByProtocol(int $protocol) Return the first ChildServer filtered by the protocol column
|
||||||
|
* @method ChildServer findOneByStatus(int $status) Return the first ChildServer filtered by the status column *
|
||||||
|
|
||||||
|
* @method ChildServer requirePk($key, ConnectionInterface $con = null) Return the ChildServer by primary key and throws \Propel\Runtime\Exception\EntityNotFoundException when not found
|
||||||
|
* @method ChildServer requireOne(ConnectionInterface $con = null) Return the first ChildServer matching the query and throws \Propel\Runtime\Exception\EntityNotFoundException when not found
|
||||||
|
*
|
||||||
|
* @method ChildServer requireOneById(int $id) Return the first ChildServer filtered by the id column and throws \Propel\Runtime\Exception\EntityNotFoundException when not found
|
||||||
|
* @method ChildServer requireOneByFqdn(string $fqdn) Return the first ChildServer filtered by the fqdn column and throws \Propel\Runtime\Exception\EntityNotFoundException when not found
|
||||||
|
* @method ChildServer requireOneByFingerprint(string $fingerprint) Return the first ChildServer filtered by the fingerprint column and throws \Propel\Runtime\Exception\EntityNotFoundException when not found
|
||||||
|
* @method ChildServer requireOneByPublicKey(string $public_key) Return the first ChildServer filtered by the public_key column and throws \Propel\Runtime\Exception\EntityNotFoundException when not found
|
||||||
|
* @method ChildServer requireOneByCertificate(string $certificate) Return the first ChildServer filtered by the certificate column and throws \Propel\Runtime\Exception\EntityNotFoundException when not found
|
||||||
|
* @method ChildServer requireOneByLocation(string $location) Return the first ChildServer filtered by the location column and throws \Propel\Runtime\Exception\EntityNotFoundException when not found
|
||||||
|
* @method ChildServer requireOneBySpeed(int $speed) Return the first ChildServer filtered by the speed column and throws \Propel\Runtime\Exception\EntityNotFoundException when not found
|
||||||
|
* @method ChildServer requireOneByExternalIp(string $external_ip) Return the first ChildServer filtered by the external_ip column and throws \Propel\Runtime\Exception\EntityNotFoundException when not found
|
||||||
|
* @method ChildServer requireOneByInternalIp(string $internal_ip) Return the first ChildServer filtered by the internal_ip column and throws \Propel\Runtime\Exception\EntityNotFoundException when not found
|
||||||
|
* @method ChildServer requireOneByNetmask(int $netmask) Return the first ChildServer filtered by the netmask column and throws \Propel\Runtime\Exception\EntityNotFoundException when not found
|
||||||
|
* @method ChildServer requireOneByFirstDns(string $first_dns) Return the first ChildServer filtered by the first_dns column and throws \Propel\Runtime\Exception\EntityNotFoundException when not found
|
||||||
|
* @method ChildServer requireOneBySecondDns(string $second_dns) Return the first ChildServer filtered by the second_dns column and throws \Propel\Runtime\Exception\EntityNotFoundException when not found
|
||||||
|
* @method ChildServer requireOneByPort(int $port) Return the first ChildServer filtered by the port column and throws \Propel\Runtime\Exception\EntityNotFoundException when not found
|
||||||
|
* @method ChildServer requireOneByProtocol(int $protocol) Return the first ChildServer filtered by the protocol column and throws \Propel\Runtime\Exception\EntityNotFoundException when not found
|
||||||
|
* @method ChildServer requireOneByStatus(int $status) Return the first ChildServer filtered by the status column and throws \Propel\Runtime\Exception\EntityNotFoundException when not found
|
||||||
|
*
|
||||||
|
* @method ChildServer[]|ObjectCollection find(ConnectionInterface $con = null) Return ChildServer objects based on current ModelCriteria
|
||||||
|
* @method ChildServer[]|ObjectCollection findById(int $id) Return ChildServer objects filtered by the id column
|
||||||
|
* @method ChildServer[]|ObjectCollection findByFqdn(string $fqdn) Return ChildServer objects filtered by the fqdn column
|
||||||
|
* @method ChildServer[]|ObjectCollection findByFingerprint(string $fingerprint) Return ChildServer objects filtered by the fingerprint column
|
||||||
|
* @method ChildServer[]|ObjectCollection findByPublicKey(string $public_key) Return ChildServer objects filtered by the public_key column
|
||||||
|
* @method ChildServer[]|ObjectCollection findByCertificate(string $certificate) Return ChildServer objects filtered by the certificate column
|
||||||
|
* @method ChildServer[]|ObjectCollection findByLocation(string $location) Return ChildServer objects filtered by the location column
|
||||||
|
* @method ChildServer[]|ObjectCollection findBySpeed(int $speed) Return ChildServer objects filtered by the speed column
|
||||||
|
* @method ChildServer[]|ObjectCollection findByExternalIp(string $external_ip) Return ChildServer objects filtered by the external_ip column
|
||||||
|
* @method ChildServer[]|ObjectCollection findByInternalIp(string $internal_ip) Return ChildServer objects filtered by the internal_ip column
|
||||||
|
* @method ChildServer[]|ObjectCollection findByNetmask(int $netmask) Return ChildServer objects filtered by the netmask column
|
||||||
|
* @method ChildServer[]|ObjectCollection findByFirstDns(string $first_dns) Return ChildServer objects filtered by the first_dns column
|
||||||
|
* @method ChildServer[]|ObjectCollection findBySecondDns(string $second_dns) Return ChildServer objects filtered by the second_dns column
|
||||||
|
* @method ChildServer[]|ObjectCollection findByPort(int $port) Return ChildServer objects filtered by the port column
|
||||||
|
* @method ChildServer[]|ObjectCollection findByProtocol(int $protocol) Return ChildServer objects filtered by the protocol column
|
||||||
|
* @method ChildServer[]|ObjectCollection findByStatus(int $status) Return ChildServer objects filtered by the status column
|
||||||
|
* @method ChildServer[]|\Propel\Runtime\Util\PropelModelPager paginate($page = 1, $maxPerPage = 10, ConnectionInterface $con = null) Issue a SELECT query based on the current ModelCriteria and uses a page and a maximum number of results per page to compute an offset and a limit
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
abstract class ServerQuery extends ModelCriteria
|
||||||
|
{
|
||||||
|
protected $entityNotFoundExceptionClass = '\\Propel\\Runtime\\Exception\\EntityNotFoundException';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes internal state of \Eater\Glim\Model\Base\ServerQuery object.
|
||||||
|
*
|
||||||
|
* @param string $dbName The database name
|
||||||
|
* @param string $modelName The phpName of a model, e.g. 'Book'
|
||||||
|
* @param string $modelAlias The alias for the model in this query, e.g. 'b'
|
||||||
|
*/
|
||||||
|
public function __construct($dbName = 'default', $modelName = '\\Eater\\Glim\\Model\\Server', $modelAlias = null)
|
||||||
|
{
|
||||||
|
parent::__construct($dbName, $modelName, $modelAlias);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a new ChildServerQuery object.
|
||||||
|
*
|
||||||
|
* @param string $modelAlias The alias of a model in the query
|
||||||
|
* @param Criteria $criteria Optional Criteria to build the query from
|
||||||
|
*
|
||||||
|
* @return ChildServerQuery
|
||||||
|
*/
|
||||||
|
public static function create($modelAlias = null, Criteria $criteria = null)
|
||||||
|
{
|
||||||
|
if ($criteria instanceof ChildServerQuery) {
|
||||||
|
return $criteria;
|
||||||
|
}
|
||||||
|
$query = new ChildServerQuery();
|
||||||
|
if (null !== $modelAlias) {
|
||||||
|
$query->setModelAlias($modelAlias);
|
||||||
|
}
|
||||||
|
if ($criteria instanceof Criteria) {
|
||||||
|
$query->mergeWith($criteria);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $query;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find object by primary key.
|
||||||
|
* Propel uses the instance pool to skip the database if the object exists.
|
||||||
|
* Go fast if the query is untouched.
|
||||||
|
*
|
||||||
|
* <code>
|
||||||
|
* $obj = $c->findPk(12, $con);
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param mixed $key Primary key to use for the query
|
||||||
|
* @param ConnectionInterface $con an optional connection object
|
||||||
|
*
|
||||||
|
* @return ChildServer|array|mixed the result, formatted by the current formatter
|
||||||
|
*/
|
||||||
|
public function findPk($key, ConnectionInterface $con = null)
|
||||||
|
{
|
||||||
|
if ($key === null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if ((null !== ($obj = ServerTableMap::getInstanceFromPool((string) $key))) && !$this->formatter) {
|
||||||
|
// the object is already in the instance pool
|
||||||
|
return $obj;
|
||||||
|
}
|
||||||
|
if ($con === null) {
|
||||||
|
$con = Propel::getServiceContainer()->getReadConnection(ServerTableMap::DATABASE_NAME);
|
||||||
|
}
|
||||||
|
$this->basePreSelect($con);
|
||||||
|
if ($this->formatter || $this->modelAlias || $this->with || $this->select
|
||||||
|
|| $this->selectColumns || $this->asColumns || $this->selectModifiers
|
||||||
|
|| $this->map || $this->having || $this->joins) {
|
||||||
|
return $this->findPkComplex($key, $con);
|
||||||
|
} else {
|
||||||
|
return $this->findPkSimple($key, $con);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find object by primary key using raw SQL to go fast.
|
||||||
|
* Bypass doSelect() and the object formatter by using generated code.
|
||||||
|
*
|
||||||
|
* @param mixed $key Primary key to use for the query
|
||||||
|
* @param ConnectionInterface $con A connection object
|
||||||
|
*
|
||||||
|
* @throws \Propel\Runtime\Exception\PropelException
|
||||||
|
*
|
||||||
|
* @return ChildServer A model object, or null if the key is not found
|
||||||
|
*/
|
||||||
|
protected function findPkSimple($key, ConnectionInterface $con)
|
||||||
|
{
|
||||||
|
$sql = 'SELECT id, fqdn, fingerprint, public_key, certificate, location, speed, external_ip, internal_ip, netmask, first_dns, second_dns, port, protocol, status FROM Server WHERE id = :p0';
|
||||||
|
try {
|
||||||
|
$stmt = $con->prepare($sql);
|
||||||
|
$stmt->bindValue(':p0', $key, PDO::PARAM_INT);
|
||||||
|
$stmt->execute();
|
||||||
|
} catch (Exception $e) {
|
||||||
|
Propel::log($e->getMessage(), Propel::LOG_ERR);
|
||||||
|
throw new PropelException(sprintf('Unable to execute SELECT statement [%s]', $sql), 0, $e);
|
||||||
|
}
|
||||||
|
$obj = null;
|
||||||
|
if ($row = $stmt->fetch(\PDO::FETCH_NUM)) {
|
||||||
|
/** @var ChildServer $obj */
|
||||||
|
$obj = new ChildServer();
|
||||||
|
$obj->hydrate($row);
|
||||||
|
ServerTableMap::addInstanceToPool($obj, (string) $key);
|
||||||
|
}
|
||||||
|
$stmt->closeCursor();
|
||||||
|
|
||||||
|
return $obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find object by primary key.
|
||||||
|
*
|
||||||
|
* @param mixed $key Primary key to use for the query
|
||||||
|
* @param ConnectionInterface $con A connection object
|
||||||
|
*
|
||||||
|
* @return ChildServer|array|mixed the result, formatted by the current formatter
|
||||||
|
*/
|
||||||
|
protected function findPkComplex($key, ConnectionInterface $con)
|
||||||
|
{
|
||||||
|
// As the query uses a PK condition, no limit(1) is necessary.
|
||||||
|
$criteria = $this->isKeepQuery() ? clone $this : $this;
|
||||||
|
$dataFetcher = $criteria
|
||||||
|
->filterByPrimaryKey($key)
|
||||||
|
->doSelect($con);
|
||||||
|
|
||||||
|
return $criteria->getFormatter()->init($criteria)->formatOne($dataFetcher);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find objects by primary key
|
||||||
|
* <code>
|
||||||
|
* $objs = $c->findPks(array(12, 56, 832), $con);
|
||||||
|
* </code>
|
||||||
|
* @param array $keys Primary keys to use for the query
|
||||||
|
* @param ConnectionInterface $con an optional connection object
|
||||||
|
*
|
||||||
|
* @return ObjectCollection|array|mixed the list of results, formatted by the current formatter
|
||||||
|
*/
|
||||||
|
public function findPks($keys, ConnectionInterface $con = null)
|
||||||
|
{
|
||||||
|
if (null === $con) {
|
||||||
|
$con = Propel::getServiceContainer()->getReadConnection($this->getDbName());
|
||||||
|
}
|
||||||
|
$this->basePreSelect($con);
|
||||||
|
$criteria = $this->isKeepQuery() ? clone $this : $this;
|
||||||
|
$dataFetcher = $criteria
|
||||||
|
->filterByPrimaryKeys($keys)
|
||||||
|
->doSelect($con);
|
||||||
|
|
||||||
|
return $criteria->getFormatter()->init($criteria)->format($dataFetcher);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query by primary key
|
||||||
|
*
|
||||||
|
* @param mixed $key Primary key to use for the query
|
||||||
|
*
|
||||||
|
* @return $this|ChildServerQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByPrimaryKey($key)
|
||||||
|
{
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ServerTableMap::COL_ID, $key, Criteria::EQUAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query by a list of primary keys
|
||||||
|
*
|
||||||
|
* @param array $keys The list of primary key to use for the query
|
||||||
|
*
|
||||||
|
* @return $this|ChildServerQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByPrimaryKeys($keys)
|
||||||
|
{
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ServerTableMap::COL_ID, $keys, Criteria::IN);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the id column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterById(1234); // WHERE id = 1234
|
||||||
|
* $query->filterById(array(12, 34)); // WHERE id IN (12, 34)
|
||||||
|
* $query->filterById(array('min' => 12)); // WHERE id > 12
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param mixed $id The value to use as filter.
|
||||||
|
* Use scalar values for equality.
|
||||||
|
* Use array values for in_array() equivalent.
|
||||||
|
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return $this|ChildServerQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterById($id = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_array($id)) {
|
||||||
|
$useMinMax = false;
|
||||||
|
if (isset($id['min'])) {
|
||||||
|
$this->addUsingAlias(ServerTableMap::COL_ID, $id['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($id['max'])) {
|
||||||
|
$this->addUsingAlias(ServerTableMap::COL_ID, $id['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ServerTableMap::COL_ID, $id, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the fqdn column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByFqdn('fooValue'); // WHERE fqdn = 'fooValue'
|
||||||
|
* $query->filterByFqdn('%fooValue%'); // WHERE fqdn LIKE '%fooValue%'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param string $fqdn The value to use as filter.
|
||||||
|
* Accepts wildcards (* and % trigger a LIKE)
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return $this|ChildServerQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByFqdn($fqdn = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (null === $comparison) {
|
||||||
|
if (is_array($fqdn)) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
} elseif (preg_match('/[\%\*]/', $fqdn)) {
|
||||||
|
$fqdn = str_replace('*', '%', $fqdn);
|
||||||
|
$comparison = Criteria::LIKE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ServerTableMap::COL_FQDN, $fqdn, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the fingerprint column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByFingerprint('fooValue'); // WHERE fingerprint = 'fooValue'
|
||||||
|
* $query->filterByFingerprint('%fooValue%'); // WHERE fingerprint LIKE '%fooValue%'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param string $fingerprint The value to use as filter.
|
||||||
|
* Accepts wildcards (* and % trigger a LIKE)
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return $this|ChildServerQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByFingerprint($fingerprint = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (null === $comparison) {
|
||||||
|
if (is_array($fingerprint)) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
} elseif (preg_match('/[\%\*]/', $fingerprint)) {
|
||||||
|
$fingerprint = str_replace('*', '%', $fingerprint);
|
||||||
|
$comparison = Criteria::LIKE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ServerTableMap::COL_FINGERPRINT, $fingerprint, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the public_key column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByPublicKey('fooValue'); // WHERE public_key = 'fooValue'
|
||||||
|
* $query->filterByPublicKey('%fooValue%'); // WHERE public_key LIKE '%fooValue%'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param string $publicKey The value to use as filter.
|
||||||
|
* Accepts wildcards (* and % trigger a LIKE)
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return $this|ChildServerQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByPublicKey($publicKey = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (null === $comparison) {
|
||||||
|
if (is_array($publicKey)) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
} elseif (preg_match('/[\%\*]/', $publicKey)) {
|
||||||
|
$publicKey = str_replace('*', '%', $publicKey);
|
||||||
|
$comparison = Criteria::LIKE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ServerTableMap::COL_PUBLIC_KEY, $publicKey, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the certificate column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByCertificate('fooValue'); // WHERE certificate = 'fooValue'
|
||||||
|
* $query->filterByCertificate('%fooValue%'); // WHERE certificate LIKE '%fooValue%'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param string $certificate The value to use as filter.
|
||||||
|
* Accepts wildcards (* and % trigger a LIKE)
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return $this|ChildServerQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByCertificate($certificate = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (null === $comparison) {
|
||||||
|
if (is_array($certificate)) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
} elseif (preg_match('/[\%\*]/', $certificate)) {
|
||||||
|
$certificate = str_replace('*', '%', $certificate);
|
||||||
|
$comparison = Criteria::LIKE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ServerTableMap::COL_CERTIFICATE, $certificate, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the location column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByLocation('fooValue'); // WHERE location = 'fooValue'
|
||||||
|
* $query->filterByLocation('%fooValue%'); // WHERE location LIKE '%fooValue%'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param string $location The value to use as filter.
|
||||||
|
* Accepts wildcards (* and % trigger a LIKE)
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return $this|ChildServerQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByLocation($location = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (null === $comparison) {
|
||||||
|
if (is_array($location)) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
} elseif (preg_match('/[\%\*]/', $location)) {
|
||||||
|
$location = str_replace('*', '%', $location);
|
||||||
|
$comparison = Criteria::LIKE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ServerTableMap::COL_LOCATION, $location, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the speed column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterBySpeed(1234); // WHERE speed = 1234
|
||||||
|
* $query->filterBySpeed(array(12, 34)); // WHERE speed IN (12, 34)
|
||||||
|
* $query->filterBySpeed(array('min' => 12)); // WHERE speed > 12
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param mixed $speed The value to use as filter.
|
||||||
|
* Use scalar values for equality.
|
||||||
|
* Use array values for in_array() equivalent.
|
||||||
|
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return $this|ChildServerQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterBySpeed($speed = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_array($speed)) {
|
||||||
|
$useMinMax = false;
|
||||||
|
if (isset($speed['min'])) {
|
||||||
|
$this->addUsingAlias(ServerTableMap::COL_SPEED, $speed['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($speed['max'])) {
|
||||||
|
$this->addUsingAlias(ServerTableMap::COL_SPEED, $speed['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ServerTableMap::COL_SPEED, $speed, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the external_ip column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByExternalIp('fooValue'); // WHERE external_ip = 'fooValue'
|
||||||
|
* $query->filterByExternalIp('%fooValue%'); // WHERE external_ip LIKE '%fooValue%'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param string $externalIp The value to use as filter.
|
||||||
|
* Accepts wildcards (* and % trigger a LIKE)
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return $this|ChildServerQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByExternalIp($externalIp = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (null === $comparison) {
|
||||||
|
if (is_array($externalIp)) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
} elseif (preg_match('/[\%\*]/', $externalIp)) {
|
||||||
|
$externalIp = str_replace('*', '%', $externalIp);
|
||||||
|
$comparison = Criteria::LIKE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ServerTableMap::COL_EXTERNAL_IP, $externalIp, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the internal_ip column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByInternalIp('fooValue'); // WHERE internal_ip = 'fooValue'
|
||||||
|
* $query->filterByInternalIp('%fooValue%'); // WHERE internal_ip LIKE '%fooValue%'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param string $internalIp The value to use as filter.
|
||||||
|
* Accepts wildcards (* and % trigger a LIKE)
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return $this|ChildServerQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByInternalIp($internalIp = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (null === $comparison) {
|
||||||
|
if (is_array($internalIp)) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
} elseif (preg_match('/[\%\*]/', $internalIp)) {
|
||||||
|
$internalIp = str_replace('*', '%', $internalIp);
|
||||||
|
$comparison = Criteria::LIKE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ServerTableMap::COL_INTERNAL_IP, $internalIp, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the netmask column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByNetmask(1234); // WHERE netmask = 1234
|
||||||
|
* $query->filterByNetmask(array(12, 34)); // WHERE netmask IN (12, 34)
|
||||||
|
* $query->filterByNetmask(array('min' => 12)); // WHERE netmask > 12
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param mixed $netmask The value to use as filter.
|
||||||
|
* Use scalar values for equality.
|
||||||
|
* Use array values for in_array() equivalent.
|
||||||
|
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return $this|ChildServerQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByNetmask($netmask = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_array($netmask)) {
|
||||||
|
$useMinMax = false;
|
||||||
|
if (isset($netmask['min'])) {
|
||||||
|
$this->addUsingAlias(ServerTableMap::COL_NETMASK, $netmask['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($netmask['max'])) {
|
||||||
|
$this->addUsingAlias(ServerTableMap::COL_NETMASK, $netmask['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ServerTableMap::COL_NETMASK, $netmask, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the first_dns column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByFirstDns('fooValue'); // WHERE first_dns = 'fooValue'
|
||||||
|
* $query->filterByFirstDns('%fooValue%'); // WHERE first_dns LIKE '%fooValue%'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param string $firstDns The value to use as filter.
|
||||||
|
* Accepts wildcards (* and % trigger a LIKE)
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return $this|ChildServerQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByFirstDns($firstDns = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (null === $comparison) {
|
||||||
|
if (is_array($firstDns)) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
} elseif (preg_match('/[\%\*]/', $firstDns)) {
|
||||||
|
$firstDns = str_replace('*', '%', $firstDns);
|
||||||
|
$comparison = Criteria::LIKE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ServerTableMap::COL_FIRST_DNS, $firstDns, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the second_dns column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterBySecondDns('fooValue'); // WHERE second_dns = 'fooValue'
|
||||||
|
* $query->filterBySecondDns('%fooValue%'); // WHERE second_dns LIKE '%fooValue%'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param string $secondDns The value to use as filter.
|
||||||
|
* Accepts wildcards (* and % trigger a LIKE)
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return $this|ChildServerQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterBySecondDns($secondDns = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (null === $comparison) {
|
||||||
|
if (is_array($secondDns)) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
} elseif (preg_match('/[\%\*]/', $secondDns)) {
|
||||||
|
$secondDns = str_replace('*', '%', $secondDns);
|
||||||
|
$comparison = Criteria::LIKE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ServerTableMap::COL_SECOND_DNS, $secondDns, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the port column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByPort(1234); // WHERE port = 1234
|
||||||
|
* $query->filterByPort(array(12, 34)); // WHERE port IN (12, 34)
|
||||||
|
* $query->filterByPort(array('min' => 12)); // WHERE port > 12
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param mixed $port The value to use as filter.
|
||||||
|
* Use scalar values for equality.
|
||||||
|
* Use array values for in_array() equivalent.
|
||||||
|
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return $this|ChildServerQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByPort($port = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_array($port)) {
|
||||||
|
$useMinMax = false;
|
||||||
|
if (isset($port['min'])) {
|
||||||
|
$this->addUsingAlias(ServerTableMap::COL_PORT, $port['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($port['max'])) {
|
||||||
|
$this->addUsingAlias(ServerTableMap::COL_PORT, $port['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ServerTableMap::COL_PORT, $port, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the protocol column
|
||||||
|
*
|
||||||
|
* @param mixed $protocol The value to use as filter
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return $this|ChildServerQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByProtocol($protocol = null, $comparison = null)
|
||||||
|
{
|
||||||
|
$valueSet = ServerTableMap::getValueSet(ServerTableMap::COL_PROTOCOL);
|
||||||
|
if (is_scalar($protocol)) {
|
||||||
|
if (!in_array($protocol, $valueSet)) {
|
||||||
|
throw new PropelException(sprintf('Value "%s" is not accepted in this enumerated column', $protocol));
|
||||||
|
}
|
||||||
|
$protocol = array_search($protocol, $valueSet);
|
||||||
|
} elseif (is_array($protocol)) {
|
||||||
|
$convertedValues = array();
|
||||||
|
foreach ($protocol as $value) {
|
||||||
|
if (!in_array($value, $valueSet)) {
|
||||||
|
throw new PropelException(sprintf('Value "%s" is not accepted in this enumerated column', $value));
|
||||||
|
}
|
||||||
|
$convertedValues []= array_search($value, $valueSet);
|
||||||
|
}
|
||||||
|
$protocol = $convertedValues;
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ServerTableMap::COL_PROTOCOL, $protocol, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the status column
|
||||||
|
*
|
||||||
|
* @param mixed $status The value to use as filter
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return $this|ChildServerQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByStatus($status = null, $comparison = null)
|
||||||
|
{
|
||||||
|
$valueSet = ServerTableMap::getValueSet(ServerTableMap::COL_STATUS);
|
||||||
|
if (is_scalar($status)) {
|
||||||
|
if (!in_array($status, $valueSet)) {
|
||||||
|
throw new PropelException(sprintf('Value "%s" is not accepted in this enumerated column', $status));
|
||||||
|
}
|
||||||
|
$status = array_search($status, $valueSet);
|
||||||
|
} elseif (is_array($status)) {
|
||||||
|
$convertedValues = array();
|
||||||
|
foreach ($status as $value) {
|
||||||
|
if (!in_array($value, $valueSet)) {
|
||||||
|
throw new PropelException(sprintf('Value "%s" is not accepted in this enumerated column', $value));
|
||||||
|
}
|
||||||
|
$convertedValues []= array_search($value, $valueSet);
|
||||||
|
}
|
||||||
|
$status = $convertedValues;
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ServerTableMap::COL_STATUS, $status, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exclude object from result
|
||||||
|
*
|
||||||
|
* @param ChildServer $server Object to remove from the list of results
|
||||||
|
*
|
||||||
|
* @return $this|ChildServerQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function prune($server = null)
|
||||||
|
{
|
||||||
|
if ($server) {
|
||||||
|
$this->addUsingAlias(ServerTableMap::COL_ID, $server->getId(), Criteria::NOT_EQUAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes all rows from the Server table.
|
||||||
|
*
|
||||||
|
* @param ConnectionInterface $con the connection to use
|
||||||
|
* @return int The number of affected rows (if supported by underlying database driver).
|
||||||
|
*/
|
||||||
|
public function doDeleteAll(ConnectionInterface $con = null)
|
||||||
|
{
|
||||||
|
if (null === $con) {
|
||||||
|
$con = Propel::getServiceContainer()->getWriteConnection(ServerTableMap::DATABASE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
// use transaction because $criteria could contain info
|
||||||
|
// for more than one table or we could emulating ON DELETE CASCADE, etc.
|
||||||
|
return $con->transaction(function () use ($con) {
|
||||||
|
$affectedRows = 0; // initialize var to track total num of affected rows
|
||||||
|
$affectedRows += parent::doDeleteAll($con);
|
||||||
|
// Because this db requires some delete cascade/set null emulation, we have to
|
||||||
|
// clear the cached instance *after* the emulation has happened (since
|
||||||
|
// instances get re-added by the select statement contained therein).
|
||||||
|
ServerTableMap::clearInstancePool();
|
||||||
|
ServerTableMap::clearRelatedInstancePool();
|
||||||
|
|
||||||
|
return $affectedRows;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Performs a DELETE on the database based on the current ModelCriteria
|
||||||
|
*
|
||||||
|
* @param ConnectionInterface $con the connection to use
|
||||||
|
* @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows
|
||||||
|
* if supported by native driver or if emulated using Propel.
|
||||||
|
* @throws PropelException Any exceptions caught during processing will be
|
||||||
|
* rethrown wrapped into a PropelException.
|
||||||
|
*/
|
||||||
|
public function delete(ConnectionInterface $con = null)
|
||||||
|
{
|
||||||
|
if (null === $con) {
|
||||||
|
$con = Propel::getServiceContainer()->getWriteConnection(ServerTableMap::DATABASE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
$criteria = $this;
|
||||||
|
|
||||||
|
// Set the correct dbName
|
||||||
|
$criteria->setDbName(ServerTableMap::DATABASE_NAME);
|
||||||
|
|
||||||
|
// use transaction because $criteria could contain info
|
||||||
|
// for more than one table or we could emulating ON DELETE CASCADE, etc.
|
||||||
|
return $con->transaction(function () use ($con, $criteria) {
|
||||||
|
$affectedRows = 0; // initialize var to track total num of affected rows
|
||||||
|
|
||||||
|
ServerTableMap::removeInstanceFromPool($criteria);
|
||||||
|
|
||||||
|
$affectedRows += ModelCriteria::delete($con);
|
||||||
|
ServerTableMap::clearRelatedInstancePool();
|
||||||
|
|
||||||
|
return $affectedRows;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
} // ServerQuery
|
@ -0,0 +1,564 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Eater\Glim\Model\Map;
|
||||||
|
|
||||||
|
use Eater\Glim\Model\Server;
|
||||||
|
use Eater\Glim\Model\ServerQuery;
|
||||||
|
use Propel\Runtime\Propel;
|
||||||
|
use Propel\Runtime\ActiveQuery\Criteria;
|
||||||
|
use Propel\Runtime\ActiveQuery\InstancePoolTrait;
|
||||||
|
use Propel\Runtime\Connection\ConnectionInterface;
|
||||||
|
use Propel\Runtime\DataFetcher\DataFetcherInterface;
|
||||||
|
use Propel\Runtime\Exception\PropelException;
|
||||||
|
use Propel\Runtime\Map\RelationMap;
|
||||||
|
use Propel\Runtime\Map\TableMap;
|
||||||
|
use Propel\Runtime\Map\TableMapTrait;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class defines the structure of the 'Server' table.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* This map class is used by Propel to do runtime db structure discovery.
|
||||||
|
* For example, the createSelectSql() method checks the type of a given column used in an
|
||||||
|
* ORDER BY clause to know whether it needs to apply SQL to make the ORDER BY case-insensitive
|
||||||
|
* (i.e. if it's a text column type).
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
class ServerTableMap extends TableMap
|
||||||
|
{
|
||||||
|
use InstancePoolTrait;
|
||||||
|
use TableMapTrait;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The (dot-path) name of this class
|
||||||
|
*/
|
||||||
|
const CLASS_NAME = '.Map.ServerTableMap';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The default database name for this class
|
||||||
|
*/
|
||||||
|
const DATABASE_NAME = 'default';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The table name for this class
|
||||||
|
*/
|
||||||
|
const TABLE_NAME = 'Server';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The related Propel class for this table
|
||||||
|
*/
|
||||||
|
const OM_CLASS = '\\Eater\\Glim\\Model\\Server';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A class that can be returned by this tableMap
|
||||||
|
*/
|
||||||
|
const CLASS_DEFAULT = 'Server';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The total number of columns
|
||||||
|
*/
|
||||||
|
const NUM_COLUMNS = 15;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The number of lazy-loaded columns
|
||||||
|
*/
|
||||||
|
const NUM_LAZY_LOAD_COLUMNS = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The number of columns to hydrate (NUM_COLUMNS - NUM_LAZY_LOAD_COLUMNS)
|
||||||
|
*/
|
||||||
|
const NUM_HYDRATE_COLUMNS = 15;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the id field
|
||||||
|
*/
|
||||||
|
const COL_ID = 'Server.id';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the fqdn field
|
||||||
|
*/
|
||||||
|
const COL_FQDN = 'Server.fqdn';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the fingerprint field
|
||||||
|
*/
|
||||||
|
const COL_FINGERPRINT = 'Server.fingerprint';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the public_key field
|
||||||
|
*/
|
||||||
|
const COL_PUBLIC_KEY = 'Server.public_key';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the certificate field
|
||||||
|
*/
|
||||||
|
const COL_CERTIFICATE = 'Server.certificate';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the location field
|
||||||
|
*/
|
||||||
|
const COL_LOCATION = 'Server.location';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the speed field
|
||||||
|
*/
|
||||||
|
const COL_SPEED = 'Server.speed';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the external_ip field
|
||||||
|
*/
|
||||||
|
const COL_EXTERNAL_IP = 'Server.external_ip';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the internal_ip field
|
||||||
|
*/
|
||||||
|
const COL_INTERNAL_IP = 'Server.internal_ip';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the netmask field
|
||||||
|
*/
|
||||||
|
const COL_NETMASK = 'Server.netmask';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the first_dns field
|
||||||
|
*/
|
||||||
|
const COL_FIRST_DNS = 'Server.first_dns';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the second_dns field
|
||||||
|
*/
|
||||||
|
const COL_SECOND_DNS = 'Server.second_dns';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the port field
|
||||||
|
*/
|
||||||
|
const COL_PORT = 'Server.port';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the protocol field
|
||||||
|
*/
|
||||||
|
const COL_PROTOCOL = 'Server.protocol';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the status field
|
||||||
|
*/
|
||||||
|
const COL_STATUS = 'Server.status';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The default string format for model objects of the related table
|
||||||
|
*/
|
||||||
|
const DEFAULT_STRING_FORMAT = 'YAML';
|
||||||
|
|
||||||
|
/** The enumerated values for the protocol field */
|
||||||
|
const COL_PROTOCOL_UDP = 'udp';
|
||||||
|
const COL_PROTOCOL_TCP = 'tcp';
|
||||||
|
|
||||||
|
/** The enumerated values for the status field */
|
||||||
|
const COL_STATUS_REGISTERED = 'registered';
|
||||||
|
const COL_STATUS_SIGNED = 'signed';
|
||||||
|
const COL_STATUS_REVOKED = 'revoked';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* holds an array of fieldnames
|
||||||
|
*
|
||||||
|
* first dimension keys are the type constants
|
||||||
|
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
|
||||||
|
*/
|
||||||
|
protected static $fieldNames = array (
|
||||||
|
self::TYPE_PHPNAME => array('Id', 'Fqdn', 'Fingerprint', 'PublicKey', 'Certificate', 'Location', 'Speed', 'ExternalIp', 'InternalIp', 'Netmask', 'FirstDns', 'SecondDns', 'Port', 'Protocol', 'Status', ),
|
||||||
|
self::TYPE_CAMELNAME => array('id', 'fqdn', 'fingerprint', 'publicKey', 'certificate', 'location', 'speed', 'externalIp', 'internalIp', 'netmask', 'firstDns', 'secondDns', 'port', 'protocol', 'status', ),
|
||||||
|
self::TYPE_COLNAME => array(ServerTableMap::COL_ID, ServerTableMap::COL_FQDN, ServerTableMap::COL_FINGERPRINT, ServerTableMap::COL_PUBLIC_KEY, ServerTableMap::COL_CERTIFICATE, ServerTableMap::COL_LOCATION, ServerTableMap::COL_SPEED, ServerTableMap::COL_EXTERNAL_IP, ServerTableMap::COL_INTERNAL_IP, ServerTableMap::COL_NETMASK, ServerTableMap::COL_FIRST_DNS, ServerTableMap::COL_SECOND_DNS, ServerTableMap::COL_PORT, ServerTableMap::COL_PROTOCOL, ServerTableMap::COL_STATUS, ),
|
||||||
|
self::TYPE_FIELDNAME => array('id', 'fqdn', 'fingerprint', 'public_key', 'certificate', 'location', 'speed', 'external_ip', 'internal_ip', 'netmask', 'first_dns', 'second_dns', 'port', 'protocol', 'status', ),
|
||||||
|
self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, )
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* holds an array of keys for quick access to the fieldnames array
|
||||||
|
*
|
||||||
|
* first dimension keys are the type constants
|
||||||
|
* e.g. self::$fieldKeys[self::TYPE_PHPNAME]['Id'] = 0
|
||||||
|
*/
|
||||||
|
protected static $fieldKeys = array (
|
||||||
|
self::TYPE_PHPNAME => array('Id' => 0, 'Fqdn' => 1, 'Fingerprint' => 2, 'PublicKey' => 3, 'Certificate' => 4, 'Location' => 5, 'Speed' => 6, 'ExternalIp' => 7, 'InternalIp' => 8, 'Netmask' => 9, 'FirstDns' => 10, 'SecondDns' => 11, 'Port' => 12, 'Protocol' => 13, 'Status' => 14, ),
|
||||||
|
self::TYPE_CAMELNAME => array('id' => 0, 'fqdn' => 1, 'fingerprint' => 2, 'publicKey' => 3, 'certificate' => 4, 'location' => 5, 'speed' => 6, 'externalIp' => 7, 'internalIp' => 8, 'netmask' => 9, 'firstDns' => 10, 'secondDns' => 11, 'port' => 12, 'protocol' => 13, 'status' => 14, ),
|
||||||
|
self::TYPE_COLNAME => array(ServerTableMap::COL_ID => 0, ServerTableMap::COL_FQDN => 1, ServerTableMap::COL_FINGERPRINT => 2, ServerTableMap::COL_PUBLIC_KEY => 3, ServerTableMap::COL_CERTIFICATE => 4, ServerTableMap::COL_LOCATION => 5, ServerTableMap::COL_SPEED => 6, ServerTableMap::COL_EXTERNAL_IP => 7, ServerTableMap::COL_INTERNAL_IP => 8, ServerTableMap::COL_NETMASK => 9, ServerTableMap::COL_FIRST_DNS => 10, ServerTableMap::COL_SECOND_DNS => 11, ServerTableMap::COL_PORT => 12, ServerTableMap::COL_PROTOCOL => 13, ServerTableMap::COL_STATUS => 14, ),
|
||||||
|
self::TYPE_FIELDNAME => array('id' => 0, 'fqdn' => 1, 'fingerprint' => 2, 'public_key' => 3, 'certificate' => 4, 'location' => 5, 'speed' => 6, 'external_ip' => 7, 'internal_ip' => 8, 'netmask' => 9, 'first_dns' => 10, 'second_dns' => 11, 'port' => 12, 'protocol' => 13, 'status' => 14, ),
|
||||||
|
self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, )
|
||||||
|
);
|
||||||
|
|
||||||
|
/** The enumerated values for this table */
|
||||||
|
protected static $enumValueSets = array(
|
||||||
|
ServerTableMap::COL_PROTOCOL => array(
|
||||||
|
self::COL_PROTOCOL_UDP,
|
||||||
|
self::COL_PROTOCOL_TCP,
|
||||||
|
),
|
||||||
|
ServerTableMap::COL_STATUS => array(
|
||||||
|
self::COL_STATUS_REGISTERED,
|
||||||
|
self::COL_STATUS_SIGNED,
|
||||||
|
self::COL_STATUS_REVOKED,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the list of values for all ENUM columns
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function getValueSets()
|
||||||
|
{
|
||||||
|
return static::$enumValueSets;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the list of values for an ENUM column
|
||||||
|
* @param string $colname
|
||||||
|
* @return array list of possible values for the column
|
||||||
|
*/
|
||||||
|
public static function getValueSet($colname)
|
||||||
|
{
|
||||||
|
$valueSets = self::getValueSets();
|
||||||
|
|
||||||
|
return $valueSets[$colname];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize the table attributes and columns
|
||||||
|
* Relations are not initialized by this method since they are lazy loaded
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
* @throws PropelException
|
||||||
|
*/
|
||||||
|
public function initialize()
|
||||||
|
{
|
||||||
|
// attributes
|
||||||
|
$this->setName('Server');
|
||||||
|
$this->setPhpName('Server');
|
||||||
|
$this->setIdentifierQuoting(false);
|
||||||
|
$this->setClassName('\\Eater\\Glim\\Model\\Server');
|
||||||
|
$this->setPackage('');
|
||||||
|
$this->setUseIdGenerator(true);
|
||||||
|
// columns
|
||||||
|
$this->addPrimaryKey('id', 'Id', 'INTEGER', true, null, null);
|
||||||
|
$this->addColumn('fqdn', 'Fqdn', 'VARCHAR', false, 64, null);
|
||||||
|
$this->addColumn('fingerprint', 'Fingerprint', 'VARCHAR', false, 64, null);
|
||||||
|
$this->addColumn('public_key', 'PublicKey', 'LONGVARCHAR', false, null, null);
|
||||||
|
$this->addColumn('certificate', 'Certificate', 'LONGVARCHAR', false, null, null);
|
||||||
|
$this->addColumn('location', 'Location', 'VARCHAR', false, 64, 'Unknown');
|
||||||
|
$this->addColumn('speed', 'Speed', 'INTEGER', false, null, -1);
|
||||||
|
$this->addColumn('external_ip', 'ExternalIp', 'VARCHAR', false, 128, null);
|
||||||
|
$this->addColumn('internal_ip', 'InternalIp', 'VARCHAR', false, 128, '10.24.0.0');
|
||||||
|
$this->addColumn('netmask', 'Netmask', 'INTEGER', false, 4, 16);
|
||||||
|
$this->addColumn('first_dns', 'FirstDns', 'VARCHAR', false, 128, null);
|
||||||
|
$this->addColumn('second_dns', 'SecondDns', 'VARCHAR', false, 128, null);
|
||||||
|
$this->addColumn('port', 'Port', 'INTEGER', false, null, 1194);
|
||||||
|
$this->addColumn('protocol', 'Protocol', 'ENUM', false, null, 'udp');
|
||||||
|
$this->getColumn('protocol')->setValueSet(array (
|
||||||
|
0 => 'udp',
|
||||||
|
1 => 'tcp',
|
||||||
|
));
|
||||||
|
$this->addColumn('status', 'Status', 'ENUM', false, null, 'registered');
|
||||||
|
$this->getColumn('status')->setValueSet(array (
|
||||||
|
0 => 'registered',
|
||||||
|
1 => 'signed',
|
||||||
|
2 => 'revoked',
|
||||||
|
));
|
||||||
|
} // initialize()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build the RelationMap objects for this table relationships
|
||||||
|
*/
|
||||||
|
public function buildRelations()
|
||||||
|
{
|
||||||
|
} // buildRelations()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves a string version of the primary key from the DB resultset row that can be used to uniquely identify a row in this table.
|
||||||
|
*
|
||||||
|
* For tables with a single-column primary key, that simple pkey value will be returned. For tables with
|
||||||
|
* a multi-column primary key, a serialize()d version of the primary key will be returned.
|
||||||
|
*
|
||||||
|
* @param array $row resultset row.
|
||||||
|
* @param int $offset The 0-based offset for reading from the resultset row.
|
||||||
|
* @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_CAMELNAME
|
||||||
|
* TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM
|
||||||
|
*
|
||||||
|
* @return string The primary key hash of the row
|
||||||
|
*/
|
||||||
|
public static function getPrimaryKeyHashFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
|
||||||
|
{
|
||||||
|
// If the PK cannot be derived from the row, return NULL.
|
||||||
|
if ($row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)] === null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (string) $row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the primary key from the DB resultset row
|
||||||
|
* For tables with a single-column primary key, that simple pkey value will be returned. For tables with
|
||||||
|
* a multi-column primary key, an array of the primary key columns will be returned.
|
||||||
|
*
|
||||||
|
* @param array $row resultset row.
|
||||||
|
* @param int $offset The 0-based offset for reading from the resultset row.
|
||||||
|
* @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_CAMELNAME
|
||||||
|
* TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM
|
||||||
|
*
|
||||||
|
* @return mixed The primary key of the row
|
||||||
|
*/
|
||||||
|
public static function getPrimaryKeyFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
|
||||||
|
{
|
||||||
|
return (int) $row[
|
||||||
|
$indexType == TableMap::TYPE_NUM
|
||||||
|
? 0 + $offset
|
||||||
|
: self::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The class that the tableMap will make instances of.
|
||||||
|
*
|
||||||
|
* If $withPrefix is true, the returned path
|
||||||
|
* uses a dot-path notation which is translated into a path
|
||||||
|
* relative to a location on the PHP include_path.
|
||||||
|
* (e.g. path.to.MyClass -> 'path/to/MyClass.php')
|
||||||
|
*
|
||||||
|
* @param boolean $withPrefix Whether or not to return the path with the class name
|
||||||
|
* @return string path.to.ClassName
|
||||||
|
*/
|
||||||
|
public static function getOMClass($withPrefix = true)
|
||||||
|
{
|
||||||
|
return $withPrefix ? ServerTableMap::CLASS_DEFAULT : ServerTableMap::OM_CLASS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Populates an object of the default type or an object that inherit from the default.
|
||||||
|
*
|
||||||
|
* @param array $row row returned by DataFetcher->fetch().
|
||||||
|
* @param int $offset The 0-based offset for reading from the resultset row.
|
||||||
|
* @param string $indexType The index type of $row. Mostly DataFetcher->getIndexType().
|
||||||
|
One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_CAMELNAME
|
||||||
|
* TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM.
|
||||||
|
*
|
||||||
|
* @throws PropelException Any exceptions caught during processing will be
|
||||||
|
* rethrown wrapped into a PropelException.
|
||||||
|
* @return array (Server object, last column rank)
|
||||||
|
*/
|
||||||
|
public static function populateObject($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
|
||||||
|
{
|
||||||
|
$key = ServerTableMap::getPrimaryKeyHashFromRow($row, $offset, $indexType);
|
||||||
|
if (null !== ($obj = ServerTableMap::getInstanceFromPool($key))) {
|
||||||
|
// We no longer rehydrate the object, since this can cause data loss.
|
||||||
|
// See http://www.propelorm.org/ticket/509
|
||||||
|
// $obj->hydrate($row, $offset, true); // rehydrate
|
||||||
|
$col = $offset + ServerTableMap::NUM_HYDRATE_COLUMNS;
|
||||||
|
} else {
|
||||||
|
$cls = ServerTableMap::OM_CLASS;
|
||||||
|
/** @var Server $obj */
|
||||||
|
$obj = new $cls();
|
||||||
|
$col = $obj->hydrate($row, $offset, false, $indexType);
|
||||||
|
ServerTableMap::addInstanceToPool($obj, $key);
|
||||||
|
}
|
||||||
|
|
||||||
|
return array($obj, $col);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The returned array will contain objects of the default type or
|
||||||
|
* objects that inherit from the default.
|
||||||
|
*
|
||||||
|
* @param DataFetcherInterface $dataFetcher
|
||||||
|
* @return array
|
||||||
|
* @throws PropelException Any exceptions caught during processing will be
|
||||||
|
* rethrown wrapped into a PropelException.
|
||||||
|
*/
|
||||||
|
public static function populateObjects(DataFetcherInterface $dataFetcher)
|
||||||
|
{
|
||||||
|
$results = array();
|
||||||
|
|
||||||
|
// set the class once to avoid overhead in the loop
|
||||||
|
$cls = static::getOMClass(false);
|
||||||
|
// populate the object(s)
|
||||||
|
while ($row = $dataFetcher->fetch()) {
|
||||||
|
$key = ServerTableMap::getPrimaryKeyHashFromRow($row, 0, $dataFetcher->getIndexType());
|
||||||
|
if (null !== ($obj = ServerTableMap::getInstanceFromPool($key))) {
|
||||||
|
// We no longer rehydrate the object, since this can cause data loss.
|
||||||
|
// See http://www.propelorm.org/ticket/509
|
||||||
|
// $obj->hydrate($row, 0, true); // rehydrate
|
||||||
|
$results[] = $obj;
|
||||||
|
} else {
|
||||||
|
/** @var Server $obj */
|
||||||
|
$obj = new $cls();
|
||||||
|
$obj->hydrate($row);
|
||||||
|
$results[] = $obj;
|
||||||
|
ServerTableMap::addInstanceToPool($obj, $key);
|
||||||
|
} // if key exists
|
||||||
|
}
|
||||||
|
|
||||||
|
return $results;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Add all the columns needed to create a new object.
|
||||||
|
*
|
||||||
|
* Note: any columns that were marked with lazyLoad="true" in the
|
||||||
|
* XML schema will not be added to the select list and only loaded
|
||||||
|
* on demand.
|
||||||
|
*
|
||||||
|
* @param Criteria $criteria object containing the columns to add.
|
||||||
|
* @param string $alias optional table alias
|
||||||
|
* @throws PropelException Any exceptions caught during processing will be
|
||||||
|
* rethrown wrapped into a PropelException.
|
||||||
|
*/
|
||||||
|
public static function addSelectColumns(Criteria $criteria, $alias = null)
|
||||||
|
{
|
||||||
|
if (null === $alias) {
|
||||||
|
$criteria->addSelectColumn(ServerTableMap::COL_ID);
|
||||||
|
$criteria->addSelectColumn(ServerTableMap::COL_FQDN);
|
||||||
|
$criteria->addSelectColumn(ServerTableMap::COL_FINGERPRINT);
|
||||||
|
$criteria->addSelectColumn(ServerTableMap::COL_PUBLIC_KEY);
|
||||||
|
$criteria->addSelectColumn(ServerTableMap::COL_CERTIFICATE);
|
||||||
|
$criteria->addSelectColumn(ServerTableMap::COL_LOCATION);
|
||||||
|
$criteria->addSelectColumn(ServerTableMap::COL_SPEED);
|
||||||
|
$criteria->addSelectColumn(ServerTableMap::COL_EXTERNAL_IP);
|
||||||
|
$criteria->addSelectColumn(ServerTableMap::COL_INTERNAL_IP);
|
||||||
|
$criteria->addSelectColumn(ServerTableMap::COL_NETMASK);
|
||||||
|
$criteria->addSelectColumn(ServerTableMap::COL_FIRST_DNS);
|
||||||
|
$criteria->addSelectColumn(ServerTableMap::COL_SECOND_DNS);
|
||||||
|
$criteria->addSelectColumn(ServerTableMap::COL_PORT);
|
||||||
|
$criteria->addSelectColumn(ServerTableMap::COL_PROTOCOL);
|
||||||
|
$criteria->addSelectColumn(ServerTableMap::COL_STATUS);
|
||||||
|
} else {
|
||||||
|
$criteria->addSelectColumn($alias . '.id');
|
||||||
|
$criteria->addSelectColumn($alias . '.fqdn');
|
||||||
|
$criteria->addSelectColumn($alias . '.fingerprint');
|
||||||
|
$criteria->addSelectColumn($alias . '.public_key');
|
||||||
|
$criteria->addSelectColumn($alias . '.certificate');
|
||||||
|
$criteria->addSelectColumn($alias . '.location');
|
||||||
|
$criteria->addSelectColumn($alias . '.speed');
|
||||||
|
$criteria->addSelectColumn($alias . '.external_ip');
|
||||||
|
$criteria->addSelectColumn($alias . '.internal_ip');
|
||||||
|
$criteria->addSelectColumn($alias . '.netmask');
|
||||||
|
$criteria->addSelectColumn($alias . '.first_dns');
|
||||||
|
$criteria->addSelectColumn($alias . '.second_dns');
|
||||||
|
$criteria->addSelectColumn($alias . '.port');
|
||||||
|
$criteria->addSelectColumn($alias . '.protocol');
|
||||||
|
$criteria->addSelectColumn($alias . '.status');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the TableMap related to this object.
|
||||||
|
* This method is not needed for general use but a specific application could have a need.
|
||||||
|
* @return TableMap
|
||||||
|
* @throws PropelException Any exceptions caught during processing will be
|
||||||
|
* rethrown wrapped into a PropelException.
|
||||||
|
*/
|
||||||
|
public static function getTableMap()
|
||||||
|
{
|
||||||
|
return Propel::getServiceContainer()->getDatabaseMap(ServerTableMap::DATABASE_NAME)->getTable(ServerTableMap::TABLE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a TableMap instance to the database for this tableMap class.
|
||||||
|
*/
|
||||||
|
public static function buildTableMap()
|
||||||
|
{
|
||||||
|
$dbMap = Propel::getServiceContainer()->getDatabaseMap(ServerTableMap::DATABASE_NAME);
|
||||||
|
if (!$dbMap->hasTable(ServerTableMap::TABLE_NAME)) {
|
||||||
|
$dbMap->addTableObject(new ServerTableMap());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Performs a DELETE on the database, given a Server or Criteria object OR a primary key value.
|
||||||
|
*
|
||||||
|
* @param mixed $values Criteria or Server object or primary key or array of primary keys
|
||||||
|
* which is used to create the DELETE statement
|
||||||
|
* @param ConnectionInterface $con the connection to use
|
||||||
|
* @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows
|
||||||
|
* if supported by native driver or if emulated using Propel.
|
||||||
|
* @throws PropelException Any exceptions caught during processing will be
|
||||||
|
* rethrown wrapped into a PropelException.
|
||||||
|
*/
|
||||||
|
public static function doDelete($values, ConnectionInterface $con = null)
|
||||||
|
{
|
||||||
|
if (null === $con) {
|
||||||
|
$con = Propel::getServiceContainer()->getWriteConnection(ServerTableMap::DATABASE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($values instanceof Criteria) {
|
||||||
|
// rename for clarity
|
||||||
|
$criteria = $values;
|
||||||
|
} elseif ($values instanceof \Eater\Glim\Model\Server) { // it's a model object
|
||||||
|
// create criteria based on pk values
|
||||||
|
$criteria = $values->buildPkeyCriteria();
|
||||||
|
} else { // it's a primary key, or an array of pks
|
||||||
|
$criteria = new Criteria(ServerTableMap::DATABASE_NAME);
|
||||||
|
$criteria->add(ServerTableMap::COL_ID, (array) $values, Criteria::IN);
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = ServerQuery::create()->mergeWith($criteria);
|
||||||
|
|
||||||
|
if ($values instanceof Criteria) {
|
||||||
|
ServerTableMap::clearInstancePool();
|
||||||
|
} elseif (!is_object($values)) { // it's a primary key, or an array of pks
|
||||||
|
foreach ((array) $values as $singleval) {
|
||||||
|
ServerTableMap::removeInstanceFromPool($singleval);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $query->delete($con);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes all rows from the Server table.
|
||||||
|
*
|
||||||
|
* @param ConnectionInterface $con the connection to use
|
||||||
|
* @return int The number of affected rows (if supported by underlying database driver).
|
||||||
|
*/
|
||||||
|
public static function doDeleteAll(ConnectionInterface $con = null)
|
||||||
|
{
|
||||||
|
return ServerQuery::create()->doDeleteAll($con);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Performs an INSERT on the database, given a Server or Criteria object.
|
||||||
|
*
|
||||||
|
* @param mixed $criteria Criteria or Server object containing data that is used to create the INSERT statement.
|
||||||
|
* @param ConnectionInterface $con the ConnectionInterface connection to use
|
||||||
|
* @return mixed The new primary key.
|
||||||
|
* @throws PropelException Any exceptions caught during processing will be
|
||||||
|
* rethrown wrapped into a PropelException.
|
||||||
|
*/
|
||||||
|
public static function doInsert($criteria, ConnectionInterface $con = null)
|
||||||
|
{
|
||||||
|
if (null === $con) {
|
||||||
|
$con = Propel::getServiceContainer()->getWriteConnection(ServerTableMap::DATABASE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($criteria instanceof Criteria) {
|
||||||
|
$criteria = clone $criteria; // rename for clarity
|
||||||
|
} else {
|
||||||
|
$criteria = $criteria->buildCriteria(); // build Criteria from Server object
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($criteria->containsKey(ServerTableMap::COL_ID) && $criteria->keyContainsValue(ServerTableMap::COL_ID) ) {
|
||||||
|
throw new PropelException('Cannot insert a value for auto-increment primary key ('.ServerTableMap::COL_ID.')');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Set the correct dbName
|
||||||
|
$query = ServerQuery::create()->mergeWith($criteria);
|
||||||
|
|
||||||
|
// use transaction because $criteria could contain info
|
||||||
|
// for more than one table (I guess, conceivably)
|
||||||
|
return $con->transaction(function () use ($con, $query) {
|
||||||
|
return $query->doInsert($con);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
} // ServerTableMap
|
||||||
|
// This is the static code needed to register the TableMap for this table with the main Propel class.
|
||||||
|
//
|
||||||
|
ServerTableMap::buildTableMap();
|
@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Eater\Glim\Model;
|
||||||
|
|
||||||
|
use Eater\Glim\Model\Base\Server as BaseServer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Skeleton subclass for representing a row from the 'Server' table.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* You should add additional methods to this class to meet the
|
||||||
|
* application requirements. This class will only be generated as
|
||||||
|
* long as it does not already exist in the output directory.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
class Server extends BaseServer
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Eater\Glim\Model;
|
||||||
|
|
||||||
|
use Eater\Glim\Model\Base\ServerQuery as BaseServerQuery;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Skeleton subclass for performing query and update operations on the 'Server' table.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* You should add additional methods to this class to meet the
|
||||||
|
* application requirements. This class will only be generated as
|
||||||
|
* long as it does not already exist in the output directory.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
class ServerQuery extends BaseServerQuery
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,66 @@
|
|||||||
|
<?php
|
||||||
|
namespace Eater\Glim\Service;
|
||||||
|
|
||||||
|
|
||||||
|
use Eater\Glim\Model\Server as ServerModel;
|
||||||
|
use GuzzleHttp\Client as HttpClient;
|
||||||
|
use Eater\Glim\Core;
|
||||||
|
|
||||||
|
class Server extends Main
|
||||||
|
{
|
||||||
|
const MANAGEMENT_PORT = 7864;
|
||||||
|
|
||||||
|
private $httpClient = null;
|
||||||
|
|
||||||
|
private function getHttpClient() {
|
||||||
|
if ($this->httpClient === null) {
|
||||||
|
$this->httpClient = new HttpClient();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->httpClient;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ServerModel $server
|
||||||
|
* @throws \Exception
|
||||||
|
*/
|
||||||
|
public function deliverSignedCertificate(ServerModel $server) {
|
||||||
|
$response = $this->doSignedRequest($server, '/deliver-crt', [
|
||||||
|
'certficate' => $server->getCertificate()
|
||||||
|
]);
|
||||||
|
|
||||||
|
if ($response->getStatusCode() !== 200) {
|
||||||
|
throw new \Exception('Delivering signed certificate failed (' . $response->getStatusCode() . '): ' . $response->getBody()->getContents());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ServerModel $server
|
||||||
|
* @param string $path
|
||||||
|
* @param string $data
|
||||||
|
* @return \Psr\Http\Message\ResponseInterface
|
||||||
|
* @throws \Exception
|
||||||
|
*/
|
||||||
|
public function doSignedRequest(ServerModel $server, $path, $data) {
|
||||||
|
$client = $this->getHttpClient();
|
||||||
|
|
||||||
|
/** @var CA $ca */
|
||||||
|
$ca = $this->get('ca');
|
||||||
|
|
||||||
|
$data['signature'] = $ca->signWithCA($server->getFingerprint());
|
||||||
|
|
||||||
|
$json = json_encode($data);
|
||||||
|
|
||||||
|
$pubKey = openssl_get_publickey($server->getPublicKey());
|
||||||
|
|
||||||
|
$success = openssl_public_encrypt($json, $crypted, $pubKey, OPENSSL_NO_PADDING);
|
||||||
|
|
||||||
|
if (!$success) {
|
||||||
|
throw new \Exception('Encrypting data failed: ' . openssl_error_string() . openssl_error_string());
|
||||||
|
}
|
||||||
|
|
||||||
|
return $client->post('http://' . $server->getExternalIp() . ':' . static::MANAGEMENT_PORT . $path, [
|
||||||
|
'body' => $crypted
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
@ -1,48 +1,159 @@
|
|||||||
{% extends "base.html.twig" %}
|
{% extends "base.html.twig" %}
|
||||||
|
|
||||||
|
{% block head %}
|
||||||
|
{{ parent() }}
|
||||||
|
|
||||||
|
<script src="/js/panel.js"></script>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h2>Certificates</h2>
|
<h2 id="certificates">Certificates</h2>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<table class="table">
|
<table class="table">
|
||||||
<thead>
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Serial</th>
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Expires on</th>
|
||||||
|
<th>
|
||||||
|
<a href="/panel/certificates/new" class="btn btn-default pull-right">Create new certificate</a>
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for certificate in user.getCertificates() if certificate.getRevoked() == 0 %}
|
||||||
<tr>
|
<tr>
|
||||||
<th>Serial</th>
|
<td>
|
||||||
<th>Name</th>
|
{{ certificate.getSerial() }}
|
||||||
<th>Expires on</th>
|
</td>
|
||||||
<th>
|
<td>
|
||||||
<a href="/panel/certificates/new" class="button">Create new certificate</a>
|
{{ certificate.getName() }}
|
||||||
</th>
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ certificate.getExpiresOn().format('Y-m-d H:i:s') }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div class="pull-right">
|
||||||
|
<button data-name="{{ certificate.getName() }}" class="revoke btn btn-warning">Revoke
|
||||||
|
</button>
|
||||||
|
<a target="_blank" href="/panel/certificates/download/{{ certificate.getName() }}"
|
||||||
|
class="download btn btn-default">Download certificate</a>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
{% else %}
|
||||||
|
<tr>
|
||||||
|
<td colspan="4">
|
||||||
|
You don't seem to have any certificates yet, <a href="/panel/certificates/new">want to
|
||||||
|
create one?</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<h2>Servers</h2>
|
||||||
|
<table class="table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Hostname</th>
|
||||||
|
<th>Fingerprint</th>
|
||||||
|
<th>Location</th>
|
||||||
|
<th>Speed</th>
|
||||||
|
<th>Actions</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for server in servers %}\
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{{ server.getFqdn() }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ server.getFingerprint() }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ server.getLocation() }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ server.getSpeed() }} MB/s
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div class="pull-right">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% else %}
|
||||||
|
<tr>
|
||||||
|
<td colspan="5">
|
||||||
|
There don't seem to be any servers yet :(
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
{% if user.getSuperuser() %}
|
||||||
|
<h2>Registered servers</h2>
|
||||||
|
<table class="table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Hostname</th>
|
||||||
|
<th>Fingerprint</th>
|
||||||
|
<th>Actions</th>
|
||||||
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for certificate in user.getCertificates() %}
|
{% for server in registeredServers %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
{{ certificate.getSerial() }}
|
{{ server.getFqdn() }}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{{ certificate.getName() }}
|
{{ server.getFingerprint() }}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{{ certificate.getExpiresOn().format('Y-m-d H:i:s') }}
|
<div class="pull-right">
|
||||||
</td>
|
<a href="/panel/server/{{ server.getFingerprint() }}" class="btn btn-default">Details</a>
|
||||||
<td>
|
</div>
|
||||||
<div class="div pull-right">
|
</td>
|
||||||
<button class="revoke btn btn-warning">Revoke</button>
|
</tr>
|
||||||
<a target="_blank" href="/panel/certificates/download/{{ certificate.getName() }}" class="download btn btn-default">Download certificate</a>
|
{% else %}
|
||||||
</div>
|
<tr>
|
||||||
</td>
|
<td colspan="5">
|
||||||
</tr>
|
There don't seem to be any servers yet :(
|
||||||
{% else %}
|
</td>
|
||||||
<tr>
|
</tr>
|
||||||
<td colspan="4">
|
{% endfor %}
|
||||||
You don't seem to have any certificates yet, <a href="/panel/certificates/new">want to create one?</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
<div class="modal fade in revoke-modal" tabindex="-1" role="dialog">
|
||||||
|
<div class="modal-dialog">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
|
||||||
|
aria-hidden="true">×</span></button>
|
||||||
|
<h4 class="modal-title">Are you sure?</h4>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div id="revoke-put-error-after-me" class="alert alert-danger modal-top-alert">
|
||||||
|
<h4>This may not be what you want!</h4>
|
||||||
|
<p>Revoking the certificate means that you <b>can't use</b> the VPN anymore with that
|
||||||
|
certificate</p>
|
||||||
|
</div>
|
||||||
|
<p>If you're really sure that you want to do this please enter your <b>password</b></p>
|
||||||
|
<div>
|
||||||
|
<input type="password" class="revoke-password form-control">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
|
||||||
|
<button type="button" class="btn btn-warning revoke-confirm">Revoke</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
@ -0,0 +1,94 @@
|
|||||||
|
{% extends "base.html.twig" %}
|
||||||
|
|
||||||
|
{% block head %}
|
||||||
|
{{ parent() }}
|
||||||
|
|
||||||
|
<script src="/js/edit_server.js"></script>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="container">
|
||||||
|
<div data-fingerprint="{{ server.getFingerprint() }}" class="row server-form">
|
||||||
|
<div class="col-md-6 col-md-offset-3">
|
||||||
|
<div class="row">
|
||||||
|
<h2>Editing server '{{ server.getFqdn() }}'</h2>
|
||||||
|
</div>
|
||||||
|
<div class="form-horizontal">
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-md-4" for="fqdn">Hostname</label>
|
||||||
|
<div class="col-md-8">
|
||||||
|
<input name="fqdn" id="fqdn" type="text" class="form-control" value="{{ server.getFqdn() }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-md-4" for="external-ip">External IP</label>
|
||||||
|
<div class="col-md-8">
|
||||||
|
<input name="external-ip" id="external-ip" type="text" min="-1" class="form-control" value="{{ server.getExternalIp() }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h3>Details</h3>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-md-4" for="location">Location</label>
|
||||||
|
<div class="col-md-8">
|
||||||
|
<input name="location" id="location" type="text" class="form-control" value="{{ server.getLocation() }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-md-4" for="speed">Speed</label>
|
||||||
|
<div class="col-md-8">
|
||||||
|
<input name="speed" id="speed" type="number" min="-1" class="form-control" value="{{ server.getSpeed() }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h3>Config</h3>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-md-4" for="internal-ip">Internal IP</label>
|
||||||
|
<div class="col-md-8">
|
||||||
|
<input name="internal-ip" id="internal-ip" type="text" min="-1" class="form-control" value="{{ server.getInternalIp() ?: '10.24.0.0' }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-md-4" for="speed">Netmask</label>
|
||||||
|
<div class="col-md-8">
|
||||||
|
<input name="netmask" id="netmask" type="number" min="8" max="24" class="form-control" value="{{ server.getNetmask() ?: 16 }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-md-4" for="port">Port</label>
|
||||||
|
<div class="col-md-8">
|
||||||
|
<input name="port" id="port" type="number" class="form-control" value="{{ server.getPort() ?: 1194 }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-md-4" for="protocol">Protocol</label>
|
||||||
|
<div class="col-md-8">
|
||||||
|
<select name="protocol" id="protocol" class="form-control">
|
||||||
|
<option value="udp" {{ server.getProtocol() == 'udp' ? 'selected' }}>UDP</option>
|
||||||
|
<option value="tcp" {{ server.getProtocol() == 'tcp' ? 'selected' }}>TCP</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-md-4" for="first-dns">First DNS</label>
|
||||||
|
<div class="col-md-8">
|
||||||
|
<input name="first-dns" id="first-dns" type="text" class="form-control" value="{{ server.getFirstDns() ?: '8.8.8.8' }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-md-4" for="second-dns">second DNS</label>
|
||||||
|
<div class="col-md-8">
|
||||||
|
<input name="second-dns" id="first-dns" type="text" class="form-control" value="{{ server.getSecondDns() ?: '8.8.4.4' }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="pull-right">
|
||||||
|
<button type="button" class="btn save">Save</button>
|
||||||
|
<button type="button" class="btn btn-primary save-and-sign">Sign and save</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
Loading…
Reference in New Issue