Commit ee3283f4 authored by dmorley's avatar dmorley
Browse files

Merge branch 'develop' into 'master'

Develop merge

See merge request !278
parents 376ebb1c 1a206481
Pipeline #6513 passed with stages
in 51 seconds
......@@ -53,7 +53,5 @@ deploy:
- minify -o js/podup.min.js js/podup.js
- minify -o css/poduptime.min.css css/poduptime.css
- sudo cp -a ./ /var/www/podupdev
tags:
- deploy
only:
- develop
......@@ -5,7 +5,21 @@ The format is based on [Keep a Changelog] and this project adheres to [Semantic
### Added
### Changed
### Deprecated
### Removed
### Fixed
### Security
## [2.9.0]
:exclamation: `config.php` changed - requires updates
### Added
- Show number of pods we check in the status page
- Limit menu by pod count to be able to not show softwares with just a few test pods. config.php change.
### Changed
- Small DNS change so you know why you might have a TXT record
### Deprecated
- All apiv1 support
### Removed
- All apuv1 files
### Fixed
### Security
......@@ -313,6 +327,7 @@ The format is based on [Keep a Changelog] and this project adheres to [Semantic
[2.2.0-sql-migration]: https://git.feneas.org/diasporg/Poduptime/blob/master/db/migrations/2.1.4-2.2.0.sql
[Unreleased]: https://git.feneas.org/diasporg/Poduptime/compare/master...develop
[2.9.0]: https://git.feneas.org/diasporg/Poduptime/compare/2.8.2...2.9.0
[2.8.2]: https://git.feneas.org/diasporg/Poduptime/compare/2.8.1...2.8.2
[2.8.1]: https://git.feneas.org/diasporg/Poduptime/compare/2.8.0...2.8.1
[2.8.0]: https://git.feneas.org/diasporg/Poduptime/compare/2.7.0...2.8.0
......
......@@ -69,12 +69,11 @@ psql -U podupuser podupdb < db/migrations/xxx.sql (see db/migrations/README.md f
# Status
[![pipeline status](https://git.feneas.org/diasporg/Poduptime/badges/develop/pipeline.svg)](https://git.feneas.org/diasporg/Poduptime/commits/develop)
[![coverage report](https://git.feneas.org/diasporg/Poduptime/badges/develop/coverage.svg)](https://git.feneas.org/diasporg/Poduptime/commits/develop)
============================
Source for Podpptime
Source for Poduptime
Poduptime is software to get live stats and data on federated network hosts.
Copyright (C) 2011 David Morley
......
<?php
/**
* API access for pod data. This is v1 and is deprecated. See /api/
*/
declare(strict_types=1);
use RedBeanPHP\R;
($_GET['key'] ?? null) === '4r45tg' || die;
// Other parameters.
$_format = $_GET['format'] ?? '';
$_method = $_GET['method'] ?? '';
$_callback = $_GET['callback'] ?? '';
require_once __DIR__ . '/boot.php';
if ($_format === 'georss') {
echo <<<EOF
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:georss="http://www.georss.org/georss">
<title>Diaspora Pods</title>
<subtitle>IP Locations of Diaspora pods on {$_SERVER['HTTP_HOST']}</subtitle>
<link href="https://{$_SERVER['HTTP_HOST']}/"/>
EOF;
try {
$pods = R::getAll('
SELECT name, monthsmonitored, responsetimelast7, uptimelast7, dateupdated, score, domain, country, lat, long
FROM pods_apiv1
');
} catch (\RedBeanPHP\RedException $e) {
die('Error in SQL query: ' . $e->getMessage());
}
foreach ($pods as $pod) {
$summary = sprintf(
'This pod %1$s has been watched for %2$s months and its average ping time is %3$s with uptime of %4$s%% this month and was last checked on %5$s. On a score of 100 this pod is a %6$s right now',
htmlentities($pod['name'] ?? '', ENT_QUOTES),
$pod['monthsmonitored'],
$pod['responsetimelast7'],
$pod['uptimelast7'],
$pod['dateupdated'],
$pod['score']
);
echo <<<EOF
<entry>
<title>https://{$pod['domain']}</title>
<link href="https://{$pod['domain']}"/>
<id>urn:{$pod['domain']}</id>
<summary>Pod Location is: {$pod['country']}
&#xA;
{$summary}</summary>
<georss:point>{$pod['lat']} {$pod['long']}</georss:point>
<georss:featureName>{$pod['domain']}</georss:featureName>
</entry>
EOF;
}
echo '</feed>';
} elseif ($_format === 'json') {
try {
$pods = R::getAll('
SELECT id, domain, status, secure, score, userrating, adminrating, city, state, country, lat, long, ip, ipv6, pingdomurl, monthsmonitored, uptimelast7, responsetimelast7, local_posts, comment_counts, dateCreated, dateUpdated, dateLaststats, hidden
FROM pods_apiv1
');
} catch (\RedBeanPHP\RedException $e) {
die('Error in SQL query: ' . $e->getMessage());
}
//json output, thx Vipul A M for fixing this
header('Content-type: application/json');
$obj = [
'podcount' => count($pods),
'pods' => allToString($pods),
];
if ($_method === 'jsonp') {
print $_callback . '(' . json_encode($obj) . ')';
} else {
print json_encode($obj);
}
} else {
try {
$pods = R::getAll('
SELECT domain, uptimelast7, country
FROM pods_apiv1
');
} catch (\RedBeanPHP\RedException $e) {
die('Error in SQL query: ' . $e->getMessage());
}
$i = 0;
foreach ($pods as $pod) {
$i++ > 0 && print ',';
printf(
'%1$s Up %2$s%% This Month - Located in: %3$s',
$pod['domain'],
$pod['uptimelast7'],
$pod['country']
);
}
}
/**
* Convert all passed items to strings.
*
* This method is for backwards compatibility of APIv1 only!
* After v2 is released and stable, this can safely be removed.
*
* @param array $arr List of all elements to stringify.
*
* @return array
*/
function allToString(array $arr)
{
$ret = $arr;
foreach ($ret as &$item) {
if (is_array($item)) {
$item = allToString($item);
continue;
}
$item !== null && $item = (string) $item;
unset($item);
}
return $ret;
}
#Graphql API Endpoint
Install your favorite Graphql extension on your browser and build away
If you run this from a subdomain luke api.domain.org you need to add a symbolic link to ../node_modules
......@@ -4,8 +4,7 @@
<link href="/node_modules/graphiql/graphiql.min.css" rel="stylesheet" />
</head>
<body style="margin: 0;">
<div class="graphiql-container" style="height: 2vh;">Use your favorite graphql browser extension, IDE, or graphiql below to get started.</div>
<div id="graphiql" style="height: 98vh;"></div>
<div id="graphiql" style="height: 100vh;"></div>
<script
src="/node_modules/react/umd/react.production.min.js"
......@@ -18,6 +17,51 @@
></script>
<script>
const customQuery =
`# Welcome to GraphiQL
#
# GraphiQL is an in-browser tool for writing, validating, and
# testing GraphQL queries.
#
# Type queries into this side of the screen, and you will see intelligent
# typeaheads aware of the current GraphQL type schema and live syntax and
# validation errors highlighted within the text.
#
# An example GraphQL query might look like:
#
{
node(domain: "diasp.org") {
domain
name
masterversion
shortversion
softwarename
daysmonitored
monthsmonitored
date_updated
date_laststats
date_created
country
countryname
city
state
lat
long
uptime_alltime
latency
ip
ipv6
dnssec
sslexpire
total_users
active_users_monthly
active_users_halfyear
score
status
signup
}
}
`;
const graphQLFetcher = graphQLParams =>
fetch('', {
method: 'post',
......@@ -27,7 +71,7 @@
.then(response => response.json())
.catch(() => response.text());
ReactDOM.render(
React.createElement(GraphiQL, { fetcher: graphQLFetcher }),
React.createElement(GraphiQL, { fetcher: graphQLFetcher, defaultQuery: customQuery }),
document.getElementById('graphiql'),
);
</script>
......
This diff is collapsed.
......@@ -92,6 +92,9 @@ return [
//hidden software word strings from view - %(one)% OR %(one|two|three)%
'hidden-softwares' => '%(relay|n/q)%',
//minimun number of pods running a software to show on the drop down menu
'minimum-number-softwares' => '5',
//hidden domain word strings from view - %(one)% OR %(one|two|three)%
'hidden-domains' => '%(xxx|porn|fuck)%',
......
......@@ -39,9 +39,14 @@ foreach ($pods as $pod) {
die('domain already exists and is registered to an owner, use the edit function to modify');
}
$digtxt = exec(escapeshellcmd('dig ' . $_domain . ' TXT +short'));
if (strpos($digtxt, $pod['publickey']) === false) {
die('domain already exists, you can claim the domain by adding a DNS TXT record that states<br><b> ' . $_domain . ' IN TXT "' . $pod['publickey'] . '"</b>');
$records = dns_get_record($_domain, DNS_TXT);
$key = array($pod['publickey']);
$filter = array_filter($records, function ($arr) use ($key) {
return in_array($arr['txt'], $key);
});
if (sizeof($filter) == 0) {
die('domain already exists, you can claim the domain by adding a DNS TXT record that states<br><b> ' . $_domain . ' IN TXT "' . $pod['publickey'] . '"</b><br>Refresh this page after updating your DNS records and giving time to propagate.');
}
echo 'domain validated, you can now add details ';
......@@ -102,7 +107,7 @@ if (!$stop) {
if ($output['body'] && stripos($output['body'], 'openRegistrations') !== false) {
echo 'Your pod has ssl and is valid<br>';
$publickey = md5(uniqid($_domain, true));
$publickey = "poduptime-site-verification=" . md5(uniqid($_domain, true));
try {
$p = R::dispense('pods');
......
DROP TABLE pods_apiv1;
CREATE TABLE pods_apiv1 AS SELECT * FROM pods;
ALTER TABLE pods_apiv1 ADD Hgitdate text, ADD Hgitref text, ADD Hruntime text, ADD Hencoding text, ADD longversion text, ADD ptr text, ADD whois text, ADD postalcode text, ADD connection text, ADD pingdomlast text, ADD adminrating decimal, ADD hidden boolean, ADD secure boolean;
ALTER TABLE pods_apiv1 RENAME COLUMN stats_apikey TO pingdomurl;
ALTER TABLE pods_apiv1 RENAME COLUMN service_xmpp TO xmpp;
ALTER TABLE pods_apiv1 RENAME COLUMN uptime_alltime TO uptimelast7;
ALTER TABLE pods_apiv1 RENAME COLUMN latency TO responsetimelast7;
ALTER TABLE pods_apiv1 RENAME COLUMN date_updated TO dateUpdated;
ALTER TABLE pods_apiv1 RENAME COLUMN date_laststats TO dateLaststats;
ALTER TABLE pods_apiv1 RENAME COLUMN date_created TO dateCreated;
ALTER TABLE pods_apiv1 ALTER COLUMN ipv6 TYPE text USING ipv6::text;
ALTER TABLE pods_apiv1 ALTER hidden DROP DEFAULT;
ALTER TABLE pods_apiv1 ALTER COLUMN hidden TYPE text USING hidden::text;
ALTER TABLE pods_apiv1 ALTER COLUMN secure TYPE text USING secure::text;
ALTER TABLE pods_apiv1 ALTER COLUMN signup TYPE text USING signup::text;
ALTER TABLE pods_apiv1 ALTER COLUMN responsetimelast7 TYPE text USING responsetimelast7::smallint;
ALTER TABLE pods_apiv1 DROP podmin_statement, DROP sslexpire, DROP dnssec, DROP publickey, DROP podmin_notify;
UPDATE pods_apiv1 SET hgitdate = 'unsupported';
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 511.984 511.984" style="enable-background:new 0 0 511.984 511.984;" xml:space="preserve">
<g>
<g>
<path d="M510.992,358.154l-0.544-4.512c-0.928-8.096-7.776-13.952-16.096-14.112l-52.544,0.832
c-4.192,0.064-9.696,3.264-12.672,6.304c-17.504,17.952-24.384,13.408-26.56,11.936c-5.76-3.808-16.992-15.872-29.28-54.144
l78.4-223.072c3.968-9.728,5.28-17.632,4.096-24.864c-2.08-12.96-11.456-21.76-27.936-23.712l-68.48,0.416
c-6.752,0.032-12.736,4.32-14.976,10.656l-32.288,92.352c-9.344-17.472-18.976-32.512-29.12-45.536
c-21.728-27.84-46.144-46.24-72.512-54.72c-0.288-0.064-2.912-0.704-3.2-0.8c-53.76-8.384-98.272,0.928-132.064,27.904
C38.256,92.618,14.448,141.706,2.16,214.954c-4.608,57.088-1.856,103.008,8.384,140.448c11.744,42.912,33.76,74.208,65.056,92.896
c45.76,29.088,90.944,37.408,134.272,24.8c31.712-9.216,61.696-29.12,91.264-60.544c12.448,18.688,26.496,33.6,41.824,44.48
c21.216,15.04,45.312,22.752,73.6,22.752c4.768,0,9.664-0.224,14.688-0.64c0.608-0.16,2.688-0.736,3.296-0.992
c27.712-11.136,48.416-26.976,61.44-47.104C509.264,410.474,514.32,385.93,510.992,358.154z M469.104,413.674
c-9.152,14.112-24.32,25.632-45.12,34.208c-23.52,1.504-44.192-3.968-62.528-16.96c-16.288-11.52-31.04-29.344-43.776-52.896
c-2.528-4.672-7.2-7.776-12.48-8.288c-0.544-0.064-1.056-0.096-1.6-0.096c-4.704,0-9.248,2.08-12.288,5.728
c-29.696,35.648-60.128,58.208-90.368,66.976c-34.592,10.048-69.984,3.168-108.576-21.312
c-24.672-14.72-41.344-38.944-50.976-74.08c-9.12-33.344-11.584-76.864-7.456-128.448c10.56-62.464,31.168-106.368,61.248-130.432
c26.848-21.408,61.92-28.352,105.504-21.632c20.448,6.56,39.104,20.96,57.056,43.936c14.784,18.944,28.544,43.136,42.112,73.952
c2.656,6.016,8.736,9.632,15.296,9.504c6.56-0.224,12.32-4.48,14.464-10.688l41.28-118.048l52.736-0.352
c-0.352,1.248-0.96,2.976-1.856,5.248L341.36,298.826c-1.12,3.232-1.216,6.72-0.224,9.984c12.224,40.064,26.56,65.12,43.84,76.512
c13.408,8.864,35.008,13.504,63.68-13.056l31.296-0.544C480.432,387.914,476.816,401.706,469.104,413.674z"/>
</g>
</g>
<g>
<g>
<path d="M295.76,274.282c-15.36-61.536-31.968-102.208-52.416-127.936c-21.728-27.36-48.64-40.192-84.704-40.288
c-0.128,0-0.224,0-0.288,0c-28.032,0.32-53.088,18.08-70.528,49.984C76.4,176.874,68.496,202.89,65.04,231.306
c-3.488,28.32-2.24,56.64,3.616,81.824c10.816,46.56,36.48,78.048,72.224,88.672c0.8,0.224,2.368,0.576,3.2,0.672
c5.984,0.8,11.808,1.216,17.568,1.216c24.416,0,46.72-7.2,66.528-21.536c26.112-18.944,47.904-49.92,66.624-94.72
c0.64-1.6,1.28-6.4,1.408-8.128C296.336,277.61,296.176,275.946,295.76,274.282z M209.424,356.17
c-17.824,12.96-37.792,17.728-59.392,14.944c-31.104-9.216-44.448-40.576-50.208-65.248c-4.928-21.248-6.016-46.368-3.04-70.688
c2.944-24.064,9.728-46.688,19.104-63.776c8.224-15.04,22.336-33.024,42.784-33.344c26.208,0.096,44.032,8.544,59.616,28.192
c17.344,21.824,32,58.176,45.44,112.448C247.952,315.466,229.68,341.514,209.424,356.17z"/>
</g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>
<?xml version="1.0" ?><svg height="117px" version="1.1" viewBox="0 0 117 117" width="117px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title/><desc/><defs/><g fill="none" fill-rule="evenodd" id="Page-1" stroke="none" stroke-width="1"><g fill-rule="nonzero" id="graph"><path d="M112.4,108.4 L8.6,108.4 L8.6,4.6 C8.6,2.3 6.8,0.5 4.5,0.5 C2.2,0.5 0.4,2.3 0.4,4.6 L0.4,112.5 C0.4,114.8 2.2,116.6 4.5,116.6 L112.4,116.6 C114.7,116.6 116.5,114.8 116.5,112.5 C116.5,110.2 114.7,108.4 112.4,108.4 Z" fill="#4A4A4A" id="Shape"/><path d="M48.3,92.6 L48.3,33.6 C48.3,31.3 46.5,29.5 44.2,29.5 C41.9,29.5 40.1,31.3 40.1,33.6 L40.1,92.6 C40.1,94.9 41.9,96.7 44.2,96.7 C46.5,96.7 48.3,94.9 48.3,92.6 Z" fill="#17AB13" id="Shape"/><path d="M28.5,92.6 L28.5,33.6 C28.5,31.3 26.7,29.5 24.4,29.5 C22.1,29.5 20.3,31.3 20.3,33.6 L20.3,92.6 C20.3,94.9 22.1,96.7 24.4,96.7 C26.7,96.7 28.5,94.9 28.5,92.6 Z" fill="#17AB13" id="Shape"/><path d="M87.9,92.6 L87.9,33.6 C87.9,31.3 86.1,29.5 83.8,29.5 C81.5,29.5 79.7,31.3 79.7,33.6 L79.7,92.6 C79.7,94.9 81.5,96.7 83.8,96.7 C86.1,96.7 87.9,94.9 87.9,92.6 Z" fill="#17AB13" id="Shape"/><path d="M107.7,92.6 L107.7,63.1 C107.7,60.8 105.9,59 103.6,59 C101.3,59 99.5,60.8 99.5,63.1 L99.5,92.6 C99.5,94.9 101.3,96.7 103.6,96.7 C105.9,96.7 107.7,94.9 107.7,92.6 Z" fill="#17AB13" id="Shape"/><path d="M68.1,92.6 L68.1,63.1 C68.1,60.8 66.3,59 64,59 C61.7,59 59.9,60.8 59.9,63.1 L59.9,92.6 C59.9,94.9 61.7,96.7 64,96.7 C66.3,96.7 68.1,94.9 68.1,92.6 Z" fill="#17AB13" id="Shape"/></g></g></svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="160"
height="180.00002"
id="svg3872"
version="1.1"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="libertree.svg">
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.49497475"
inkscape:cx="244.48024"
inkscape:cy="67.610615"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="511"
inkscape:window-height="434"
inkscape:window-x="0"
inkscape:window-y="59"
inkscape:window-maximized="0" />
<defs
id="defs3874">
<clipPath
id="clipPath3179"
clipPathUnits="userSpaceOnUse">
<rect
inkscape:export-ydpi="120"
inkscape:export-xdpi="120"
inkscape:export-filename="/home/jackie/libertree-project/libertree/cropped-logo.png"
y="932.36218"
x="80"
height="120"
width="120"
id="rect3181"
style="fill:#ffffff;fill-opacity:1;stroke:none;display:inline;opacity:1" />
</clipPath>
</defs>
<metadata
id="metadata3877">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-45.714286,-190.9336)"
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<g
inkscape:export-ydpi="120"
inkscape:export-xdpi="120"
transform="translate(25.714286,-581.42858)"
id="g3136"
style="display:inline;opacity:1">
<rect
y="792.36176"
x="40.000389"
height="120"
width="120"
id="rect3841"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;opacity:1" />
<g
style="display:inline;opacity:1"
id="g3952"
inkscape:export-filename="/home/jackie/libertree-project/libertree/small-logo.png"
inkscape:export-xdpi="30"
inkscape:export-ydpi="30"
clip-path="url(#clipPath3179)"
transform="translate(-40,-140)">
<rect
style="fill:none;stroke:none;display:inline;opacity:1"
id="rect3995"
width="120"
height="120"
x="80"
y="932.36218"
inkscape:export-filename="/home/jackie/libertree-project/libertree/cropped-logo.png"
inkscape:export-xdpi="120"
inkscape:export-ydpi="120" />
<path
inkscape:export-ydpi="27.107756"
inkscape:export-xdpi="27.107756"
inkscape:export-filename="/home/jackie/libertree-project/libertree/logo-test.png"
sodipodi:nodetypes="cccscccccccccccccsccccccccccscccccccscccccccccccccccccccccccccccccccccccssssscc"
inkscape:connector-curvature="0"
id="path3068-7"
d="m 89.98307,1042.4041 c 4.876027,-0.3715 6.873963,-2.5022 9.197164,-9.8081 2.261816,-4.9518 2.367226,-9.9106 2.268886,-15.411 0.1577,-5.0477 -0.17693,-10.044 -0.74363,-11.1029 l -1.030343,-1.9252 c -9.763395,3.2309 -9.776852,1.2805 -15.350264,7.5628 -11.231465,-0.073 -12.144819,-7.1505 -17.442883,-0.5544 -2.099999,3.568 -2.994411,2.9321 -5.02123,2.6455 -1.705878,-1.6945 -16.827389,-1.2927 -22.152411,0.5887 -7.622498,-0.3516 -13.688607,-4.6397 -20.976447,-2.7198 -2.139938,-2.6384 -5.411922,-5.8709 -5.576206,-8.5694 -4.2717833,-4.66138 -1.10575,-4.676 -0.890263,-9.18995 0,-1.08142 0.368662,-1.90799 0.81925,-1.83685 1.86533,0.11437 3.367107,-0.0191 5.260719,-0.12935 0.301409,-1.82378 0.259392,-4.19846 -0.529574,-6.6539 -0.04883,-0.35534 -2.304697,-0.30978 -5.013087,0.10126 -2.408086,0.25037 -4.3002951,1.57442 -5.8249056,-0.44626 C 2.0744362,978.45645 1.0145021,972.2922 4.8004433,972.2922 l 2.2370594,0 C 6.2327471,970.29042 5.5382298,968.97223 5.0421986,966.18289 4.807764,963.74768 6.1339184,963.55355 7.5931521,963.55355 7.2451204,961.733 7.3874346,960.25567 6.54909,958.09189 c 1.739657,-1.08675 1.3832352,-1.71599 1.6903606,-3.37965 l 0.6224847,-2.38038 c 9.6258557,-6.50319 4.3265817,-15.14965 7.1257247,-21.43094 1.490133,-3.43657 2.214921,-3.34303 5.016437,-4.41808 0.10061,-1.83133 -0.410358,-5.36261 0.819248,-6.39048 0.450587,0.12763 1.95665,-0.39803 3.346816,-1.16813 l 2.527565,-1.40021 c 0.980952,0.81412 1.961906,1.62824 2.942859,2.44236 0.617267,-1.2528 1.7885,-2.29471 3.048752,-1.84837 5.235461,0.20325 7.234211,-2.72649 8.269378,-6.85092 1.459396,0.68978 3.301736,0.97963 4.509397,0.0253 21.187564,-7.43569 13.69287,-3.53248 28.936931,-2.39774 -0.553748,-2.11072 -0.965574,-4.52273 -2.282493,-6.26499 -0.599624,-0.76549 -0.747677,-1.73434 -0.329001,-2.15302 0.418662,-0.41867 1.103148,-0.26746 1.521064,0.33603 0.864063,1.24773 2.944266,1.38851 4.058142,0.27463 2.502596,-1.06804 4.046944,0.50418 6.252259,1.34264 1.082566,-0.89844 2.165119,-1.79688 3.247678,-2.69533 7.281731,5.5067 17.429688,3.27946 24.192148,8.04782 1.60456,-1.49344 3.6804,-2.63972 5.70213,-2.93608 l 2.58081,-0.34562 c 0.44525,1.77405 0.89052,3.5481 1.33578,5.32215 1.8047,0.4739 3.67263,1.44375 5.54971,1.41689 1.57429,5.40243 -3.4543,7.14641 5.73474,0.40233 2.0026,0.23899 4.00521,0.47798 6.00781,0.71697 0.0266,0.91388 0.59056,2.98095 -0.99006,3.13188 -1.36746,0.33474 -0.27436,2.73687 0.15254,4.36933 8.36265,-0.17939 3.9215,3.97991 11.76431,1.92895 0.45398,2.2699 0.90795,4.5398 1.36194,6.80969 7.16969,0.2901 9.12809,1.48552 15.13457,3.46068 -1.95988,3.29373 -3.45615,6.54547 -3.93818,11.28575 6.74154,0.90013 16.19997,13.01226 14.35187,13.99104 -1.87556,1.31524 -2.13313,3.04174 -2.67995,5.13278 1.59936,2.11766 3.8073,4.57697 6.4198,4.77374 l 2.66257,0.13377 c 0.23966,1.69161 0.47933,3.38321 0.71899,5.07483 -7.09965,0.17298 -10.68874,7.93533 -16.60361,9.24255 -7.43678,-4.15174 -14.14958,-4.4111 -5.99233,2.78963 -1.42474,7.00328 -8.42705,8.77633 -12.68043,9.61413 -2.98108,-3.8896 -2.6247,-3.04697 -6.31759,-0.74072 -1.28337,-1.8549 -6.34511,-4.50847 -6.11967,-5.78228 -3.14373,2.43129 -2.68922,5.77494 0.26429,4.83789 1.03259,0.11393 1.5231,1.60295 2.21744,2.79413 -4.287,5.32886 1.32079,4.20744 2.49463,7.12656 l 0.60488,1.5763 c -3.90741,4.1819 -6.98594,1.1542 -10.9761,4.1169 -5.40758,2.873 -14.84727,-1.8107 -18.55913,-1.8204 l 0.50735,10.5985 c 0.0923,4.0553 -0.14173,9.0936 -0.52013,11.1964 -0.41651,4.4924 -1.27201,9.3142 -2.68876,13.034 0.25656,0.2566 3.5108,1.609 4.9413,1.8175 1.43049,0.2085 8.48711,-1.1057 10.54005,-0.8791 2.05294,0.2266 1.75385,1.489 3.87775,1.7998 2.12391,0.3109 7.55469,2.827 9.19807,3.2882 7.57524,2.1262 19.93903,5.9625 13.51559,6.1523 -27.73493,0.8196 -84.901372,-0.9643 -84.901372,-0.9643 9.803416,-5.8584 7.425924,-3.9655 23.246622,-9.8454 z"
style="fill:#535353;fill-opacity:1;display:inline;opacity:1" />
<g
style="stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;display:inline;opacity:1"
id="g3900-8"
transform="matrix(0.97947281,0,0,0.97947281,-125.54779,482.4008)">
<rect
inkscape:transform-center-x="7.1168482e-05"
id="rect3903-8"
style="fill:#535353;fill-opacity:1;stroke:none;opacity:1"
width="25.203268"
height="8.1262989"
x="1106.783"
y="951.6709"
ry="1.7952157"
transform="matrix(0.99765046,0.0685095,-0.86267404,0.50576031,0,0)"
inkscape:transform-center-y="-1.407746" />
<path
style="fill:none;stroke:#535353;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;opacity:1"
d="m 268.92857,474.1479 c 0,0 3.57143,31.42857 20,58.57143 16.42858,27.14286 14.82144,28.39285 14.82144,28.39285 m -23.03572,-2.32143 c 0,0 0,-2.14285 -16.42858,-29.28571 -16.42857,-27.14286 -20,-58.57143 -20,-58.57143"
inkscape:connector-curvature="0"
sodipodi:nodetypes="csccsc"
id="path3086-7" />
</g>
<g
id="g4069-2"
style="fill:#000000;opacity:1"
transform="matrix(0.97947281,0,0,0.97947281,-136.04215,481.70118)">
<path
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#535353;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;opacity:1"
d="m 290.52883,535.67336 c -1.58394,0.23159 -5.45895,2.91979 -5.13082,3.71561 0.21204,0.4162 -1.14597,1.28242 -1.0142,2.62679 0.62608,0.12338 1.28083,0.0482 1.07839,0.50536 -0.10938,0.24699 -0.23982,0.73206 -0.0872,1.04742 0.28262,0.58394 1.41976,0.66056 1.62126,1.0767 0.63812,1.31783 3.42958,-0.29865 4.32367,1.50945 0.52264,1.05693 3.67304,-0.17407 3.57478,-1.34917 -0.11957,-1.42989 0.25501,-1.21535 0.48408,-2.45939 0.22906,-1.24403 0.065,-3.15248 -0.51527,-4.41697 -1.12511,-2.26341 -2.70602,-2.27879 -4.3347,-2.2558 z"
id="path3931-1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccscssszcc" />
<path
style="fill:#535353;fill-opacity:1;stroke:none;opacity:1"
d="m 307.125,527.96875 c -0.76346,2.98414 2.15396,5.24868 1.34375,7.5625 -1.14216,3.09496 -2.88882,1.86322 -4.96875,3.78125 -3.48629,1.99803 -6.50901,4.14493 -11.125,3.65625 -3.0961,-1.14469 -4.5057,-1.34254 -6.1875,-2 -2.02705,-0.79243 -0.43393,-0.67005 -2.5625,-4.5 -0.5929,-1.06681 -1.9375,-1.15625 -1.9375,-1.15625 -0.35329,3.27136 0.76101,5.96063 3.34375,8.84375 0,0 7.93824,3.73771 9.0625,4.75 3.66588,5.5657 3.50867,7.54322 3.53125,8.21875 2.44584,4.72209 2.60544,5.09838 9.46875,6.9375 2.28843,1.33147 3.56295,3.57732 6.125,6.15625 0.806,-0.83567 1.94677,-0.96994 2.625,-2.0625 0.53775,-0.86689 1.42561,-2.31362 0.96875,-3.28125 -1.04232,-2.20767 -2.0056,0.23564 -3.125,0.28125 -0.20804,-0.57962 -1.15436,-1.72841 -2.25,-2.84375 1.7723,0.0785 3.1952,-0.24024 5.125,-0.75 3.46711,1.11274 5.48955,3.23051 9.4375,5.5625 1.14164,-0.91018 2.64724,-0.73127 3.5625,-1.6875 0.82967,-0.86678 2.04561,-2.61057 1.4375,-3.34375 -1.69155,-2.03943 -2.4403,0.41127 -4.09375,0.5625 -0.69919,-1.13876 -6.64384,-4.78313 -8.9375,-5.625 -0.95059,-0.34888 -3.68142,-0.93032 -6.5,-1.53125 -1.71729,-1.98472 -1.5626,-2.07573 -3.4375,-5.75 -1.75062,-3.43072 -1.72376,-4.42815 -1.03125,-6.5 0.63813,-1.90912 2.78397,-2.42816 4.34375,-4.1875 2.31802,-2.53462 0.93909,-7.31655 -1.125,-9.9375 -0.67941,-0.8627 -3.09375,-1.15625 -3.09375,-1.15625 z"
transform="matrix(0.77485881,0,0,0.77485881,62.167094,125.33369)"
id="rect3933-1-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccsscccccccscccccscccsscsc" />
</g>
</g>
<path
style="fill:#f0f0f0;fill-opacity:1;stroke:none;display:inline;opacity:1"
d="m 20,772.36218 0,180.00002 160,0 0,-180.00002 z m 140,20 0,120.00002 -120,0 0,-120.00002 z"
id="rect3087"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc"
inkscape:export-filename="/home/jackie/libertree-project/libertree/cropped-logo.png"
inkscape:export-xdpi="120"
inkscape:export-ydpi="120" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;display:inline;opacity:1;fill:#505050;fill-opacity:1;stroke:none"
x="100"
y="938.36218"
id="text3876-0"
inkscape:export-filename="/home/jackie/libertree-project/libertree-frontend-ramaze/public/images/wordmark.png"
inkscape:export-xdpi="107.48641"
inkscape:export-ydpi="107.48641"><tspan
sodipodi:role="line"
id="tspan3878-0"
x="100"
y="938.36218"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:33px;line-height:1.25;font-family:'Linux Libertine';-inkscape-font-specification:'Linux Libertine';text-align:center;text-anchor:middle;opacity:1;fill:#505050;fill-opacity:1">Libertree</tspan></text>
<rect
transform="translate(-395.32561,234.5236)"
y="557.38745"
x="435.37573"
height="123.23861"
width="119.198"
id="rect3837"
style="opacity:0;fill:#f0f0f0;fill-opacity:1;fill-rule:nonzero;stroke:none" />
</g>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="400" height="400" id="svg3668" version="1.1" inkscape:version="0.48.3.1 r9886" inkscape:export-filename="/home/mray/Desktop/pump.io.png" inkscape:export-xdpi="720" inkscape:export-ydpi="720" sodipodi:docname="pump.io-logo.svg">
<title id="title2989">pump.io logo</title>
<defs id="defs3670"/>
<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="0.27058824" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:zoom="1.6239393" inkscape:cx="103.00555" inkscape:cy="162.48159" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" inkscape:showpageshadow="false" showguides="true" inkscape:guide-bbox="true" showborder="true" inkscape:snap-bbox="true" inkscape:snap-global="true" inkscape:snap-bbox-edge-midpoints="true" inkscape:bbox-nodes="true" inkscape:bbox-paths="true" inkscape:window-width="1676" inkscape:window-height="1011" inkscape:window-x="0" inkscape:window-y="37" inkscape:window-maximized="0">
<inkscape:grid type="xygrid" id="grid3694" empspacing="5" dotted="true" visible="true" enabled="true" snapvisiblegridlinesonly="true"/>
</sodipodi:namedview>
<metadata id="metadata3673">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title>pump.io logo</dc:title>
<dc:creator>
<cc:Agent>
<dc:title>Robert Martinez</dc:title>
</cc:Agent>
</dc:creator>
<dc:source/>
<cc:license rdf:resource="http://pump.io"/>
</cc:Work>
</rdf:RDF>
</metadata>