tor-commits
Threads by month
- ----- 2025 -----
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
June 2015
- 22 participants
- 1870 discussions

08 Jun '15
commit c0c0a6085e7e6395e4f5819ba47076786ae2f2b0
Merge: 2f67a6e 6785f0b
Author: Nick Mathewson <nickm(a)torproject.org>
Date: Mon Jun 8 10:33:38 2015 -0400
Merge remote-tracking branch 'origin/maint-0.2.6'
changes/ticket8243 | 7 +++++++
src/or/dirserv.c | 6 ++++--
2 files changed, 11 insertions(+), 2 deletions(-)
1
0

08 Jun '15
commit 6785f0b65a106561a36239d89140bf18be3d7c6c
Author: David Goulet <dgoulet(a)ev0ke.net>
Date: Mon May 11 11:27:30 2015 -0400
HSDir flag now requires the Stable flag
Fixes #8243
---
changes/ticket8243 | 7 +++++++
src/or/dirserv.c | 6 ++++--
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/changes/ticket8243 b/changes/ticket8243
new file mode 100644
index 0000000..8946a21
--- /dev/null
+++ b/changes/ticket8243
@@ -0,0 +1,7 @@
+ o Minor feature:
+ - The HSDir flag given by authorities now requires the Stable flag. For
+ the current network, this results in going from 2887 to 2806 HSDirs.
+ Also, it makes it harder for an attacker to launch a sybil attack by
+ raising the effort for a relay to become Stable which takes at the
+ very least 7 days to do so and by keeping the 96 hours uptime
+ requirement for HSDir. Implements ticket #8243.
diff --git a/src/or/dirserv.c b/src/or/dirserv.c
index a024be8..65bfafb 100644
--- a/src/or/dirserv.c
+++ b/src/or/dirserv.c
@@ -1278,8 +1278,9 @@ dirserv_thinks_router_is_unreliable(time_t now,
}
/** Return true iff <b>router</b> should be assigned the "HSDir" flag.
- * Right now this means it advertises support for it, it has a high
- * uptime, it has a DirPort open, and it's currently considered Running.
+ * Right now this means it advertises support for it, it has a high uptime,
+ * it has a DirPort open, it has the Stable flag and it's currently
+ * considered Running.
*
* This function needs to be called after router-\>is_running has
* been set.
@@ -1306,6 +1307,7 @@ dirserv_thinks_router_is_hs_dir(const routerinfo_t *router,
uptime = real_uptime(router, now);
return (router->wants_to_be_hs_dir && router->dir_port &&
+ node->is_stable &&
uptime >= get_options()->MinUptimeHidServDirectoryV2 &&
router_is_active(router, node, now));
}
1
0

07 Jun '15
commit 9d705ff9cc5955e5468126f3494da66dc1328ae1
Author: Damian Johnson <atagar(a)torproject.org>
Date: Fri Jun 5 08:51:09 2015 -0700
Simplifying run_nyx and fixing prerequisite checks
Yeah, that wasn't gonna work. We imported nyx, *then* ran a function to check
for ImportErrors. If we were missing a prereqisite then the initial import
would've failed making our _check_prereq() function pointless.
Stem requires Python 2.6 so that check is pointless. As for the rest it's both
simpler and safer to import nyx then see what breaks.
This also makes our run_nyx script dead simple (main() method is now in our
__init__.py).
---
nyx/__init__.py | 34 +++++++++++++++++++++++++++++++--
run_nyx | 56 ++-----------------------------------------------------
2 files changed, 34 insertions(+), 56 deletions(-)
diff --git a/nyx/__init__.py b/nyx/__init__.py
index b81c0fb..c38b4f7 100644
--- a/nyx/__init__.py
+++ b/nyx/__init__.py
@@ -2,6 +2,9 @@
Tor curses monitoring application.
"""
+__version__ = '1.4.6_dev'
+__release_date__ = 'April 28, 2011'
+
__all__ = [
'arguments',
'config_panel',
@@ -13,5 +16,32 @@ __all__ = [
'torrc_panel',
]
-__version__ = '1.4.6_dev'
-__release_date__ = 'April 28, 2011'
+import distutils.spawn
+import sys
+
+
+def main():
+ try:
+ import nyx.starter
+ nyx.starter.main()
+ except ImportError as exc:
+ if exc.message == 'No module named stem':
+ if distutils.spawn.find_executable('pip') is not None:
+ advice = ", try running 'sudo pip install stem'"
+ elif distutils.spawn.find_executable('apt-get') is not None:
+ advice = ", try running 'sudo apt-get install python-stem'"
+ else:
+ advice = ', you can find it at https://stem.torproject.org/download.html'
+
+ print 'nyx requires stem' + advice
+ elif exc.message == 'No module named curses':
+ if distutils.spawn.find_executable('apt-get') is not None:
+ advice = ", try running 'sudo apt-get install python-curses'"
+ else:
+ advice = '' # not sure what to do for other platforms
+
+ print 'nyx requires curses' + advice
+ else:
+ print 'Unable to start nyx: %s' % exc
+
+ sys.exit(1)
diff --git a/run_nyx b/run_nyx
index c3ba49b..866e050 100755
--- a/run_nyx
+++ b/run_nyx
@@ -2,59 +2,7 @@
# Copyright 2014, Damian Johnson and The Tor Project
# See LICENSE for licensing information
-import distutils.spawn
-import sys
-
-import nyx.starter
-
-def main():
- try:
- _check_prereq()
- except ImportError as exc:
- print exc
- sys.exit(1)
-
- nyx.starter.main()
-
-
-def _check_prereq():
- """
- Checks for nyx's prerequisistes...
-
- * python 2.6 or later
- * stem
- * curses
-
- :raises: **ImportError** if any of our prerequisites aren't met
- """
-
- major_version, minor_version = sys.version_info[0:2]
-
- if major_version < 2 or (major_version == 2 and minor_version < 6):
- raise ImportError('nyx requires python version 2.6 or greater')
-
- try:
- import stem
- except ImportError:
- if distutils.spawn.find_executable('pip') is not None:
- advice = "try running 'sudo pip install stem'"
- elif distutils.spawn.find_executable('apt-get') is not None:
- advice = "try running 'sudo apt-get install python-stem'"
- else:
- advice = 'you can find it at https://stem.torproject.org/download.html'
-
- raise ImportError('nyx requires stem, %s' % advice)
-
- try:
- import curses
- except ImportError:
- if distutils.spawn.find_executable('apt-get') is not None:
- advice = ", try running 'sudo apt-get install python-curses'"
- else:
- advice = '' # not sure what to do for other platforms
-
- raise ImportError('nyx requires curses' + advice)
-
+import nyx
if __name__ == '__main__':
- main()
+ nyx.main()
1
0
commit a5fd674aeae0c5a9dbc8d86fb9014fc7a289eb4f
Author: Damian Johnson <atagar(a)torproject.org>
Date: Sat Jun 6 12:55:16 2015 -0700
Renaming non-code resources
Sed did a good job of renaming from 'arm' to 'nyx' but naturally didn't include
files. Just renaming a few in our resources directory.
---
nyx/resources/arm.1 | 69 ---
nyx/resources/nyx.1 | 69 +++
nyx/resources/tor-arm.desktop | 12 -
nyx/resources/tor-arm.svg | 1074 -----------------------------------------
nyx/resources/tor-nyx.desktop | 12 +
nyx/resources/tor-nyx.svg | 1074 +++++++++++++++++++++++++++++++++++++++++
6 files changed, 1155 insertions(+), 1155 deletions(-)
diff --git a/nyx/resources/arm.1 b/nyx/resources/arm.1
deleted file mode 100644
index d82528a..0000000
--- a/nyx/resources/arm.1
+++ /dev/null
@@ -1,69 +0,0 @@
-.TH nyx 1 "27 August 2010"
-.SH NAME
-nyx - Terminal Tor status monitor
-
-.SH SYNOPSIS
-nyx [\fIOPTION\fR]
-
-.SH DESCRIPTION
-The anonymizing relay monitor (nyx) is a terminal status monitor for Tor
-relays, intended for command-line aficionados, ssh connections, and anyone
-stuck with a tty terminal. This works much like top does for system usage,
-providing real time statistics for:
- * bandwidth, cpu, and memory usage
- * relay's current configuration
- * logged events
- * connection details (ip, hostname, fingerprint, and consensus data)
- * etc
-
-Defaults and interface properties are configurable via a user provided
-configuration file (for an example see the provided \fBnyxrc.sample\fR).
-Releases and information are available at \fIhttp://www.atagar.com/nyx\fR.
-
-.SH OPTIONS
-.TP
-\fB\-i\fR, \fB\-\-interface [ADDRESS:]PORT\fR
-tor control port nyx should attach to (default is \fB127.0.0.1:9051\fR)
-
-.TP
-\fB\-c\fR, \fB\-\-config CONFIG_PATH\fR
-user provided configuration file (default is \fB~/.nyx/nyxrc\fR)
-
-.TP
-\fB\-d\fR, \fB\-\-debug\fR
-writes all nyx logs to ~/.nyx/log
-
-.TP
-\fB\-e\fR, \fB\-\-event EVENT_FLAGS\fR
-flags for tor, nyx, and torctl events to be logged (default is \fBN3\fR)
-
- d DEBUG a ADDRMAP k DESCCHANGED s STREAM
- i INFO f AUTHDIR_NEWDESCS g GUARD r STREAM_BW
- n NOTICE h BUILDTIMEOUT_SET l NEWCONSENSUS t STATUS_CLIENT
- w WARN b BW m NEWDESC u STATUS_GENERAL
- e ERR c CIRC p NS v STATUS_SERVER
- j CLIENTS_SEEN q ORCONN
- DINWE tor runlevel+ A All Events
- 12345 nyx runlevel+ X No Events
- 67890 torctl runlevel+ U Unknown Events
-
-.TP
-\fB\-v\fR, \fB\-\-version\fR
-provides version information
-
-.TP
-\fB\-h\fR, \fB\-\-help\fR
-provides usage information
-
-.SH FILES
-.TP
-\fB~/.nyx/nyxrc\fR
-Your personal nyx configuration file
-
-.TP
-\fB/usr/share/doc/nyx/nyxrc.sample\fR
-Sample nyxrc configuration file that documents all options
-
-.SH AUTHOR
-Written by Damian Johnson (atagar(a)torproject.org)
-
diff --git a/nyx/resources/nyx.1 b/nyx/resources/nyx.1
new file mode 100644
index 0000000..d82528a
--- /dev/null
+++ b/nyx/resources/nyx.1
@@ -0,0 +1,69 @@
+.TH nyx 1 "27 August 2010"
+.SH NAME
+nyx - Terminal Tor status monitor
+
+.SH SYNOPSIS
+nyx [\fIOPTION\fR]
+
+.SH DESCRIPTION
+The anonymizing relay monitor (nyx) is a terminal status monitor for Tor
+relays, intended for command-line aficionados, ssh connections, and anyone
+stuck with a tty terminal. This works much like top does for system usage,
+providing real time statistics for:
+ * bandwidth, cpu, and memory usage
+ * relay's current configuration
+ * logged events
+ * connection details (ip, hostname, fingerprint, and consensus data)
+ * etc
+
+Defaults and interface properties are configurable via a user provided
+configuration file (for an example see the provided \fBnyxrc.sample\fR).
+Releases and information are available at \fIhttp://www.atagar.com/nyx\fR.
+
+.SH OPTIONS
+.TP
+\fB\-i\fR, \fB\-\-interface [ADDRESS:]PORT\fR
+tor control port nyx should attach to (default is \fB127.0.0.1:9051\fR)
+
+.TP
+\fB\-c\fR, \fB\-\-config CONFIG_PATH\fR
+user provided configuration file (default is \fB~/.nyx/nyxrc\fR)
+
+.TP
+\fB\-d\fR, \fB\-\-debug\fR
+writes all nyx logs to ~/.nyx/log
+
+.TP
+\fB\-e\fR, \fB\-\-event EVENT_FLAGS\fR
+flags for tor, nyx, and torctl events to be logged (default is \fBN3\fR)
+
+ d DEBUG a ADDRMAP k DESCCHANGED s STREAM
+ i INFO f AUTHDIR_NEWDESCS g GUARD r STREAM_BW
+ n NOTICE h BUILDTIMEOUT_SET l NEWCONSENSUS t STATUS_CLIENT
+ w WARN b BW m NEWDESC u STATUS_GENERAL
+ e ERR c CIRC p NS v STATUS_SERVER
+ j CLIENTS_SEEN q ORCONN
+ DINWE tor runlevel+ A All Events
+ 12345 nyx runlevel+ X No Events
+ 67890 torctl runlevel+ U Unknown Events
+
+.TP
+\fB\-v\fR, \fB\-\-version\fR
+provides version information
+
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+provides usage information
+
+.SH FILES
+.TP
+\fB~/.nyx/nyxrc\fR
+Your personal nyx configuration file
+
+.TP
+\fB/usr/share/doc/nyx/nyxrc.sample\fR
+Sample nyxrc configuration file that documents all options
+
+.SH AUTHOR
+Written by Damian Johnson (atagar(a)torproject.org)
+
diff --git a/nyx/resources/tor-arm.desktop b/nyx/resources/tor-arm.desktop
deleted file mode 100644
index faba9af..0000000
--- a/nyx/resources/tor-arm.desktop
+++ /dev/null
@@ -1,12 +0,0 @@
-[Desktop Entry]
-Name=Tor monitor
-Name[es]=Monitor de Tor
-Comment=Status monitor for Tor routers
-Comment[es]=Monitor de estado para routers Tor
-GenericName=Monitor
-GenericName[es]=Monitor
-Exec=nyx -g
-Icon=tor-nyx
-Terminal=false
-Type=Application
-Categories=System;Monitor;GTK;
diff --git a/nyx/resources/tor-arm.svg b/nyx/resources/tor-arm.svg
deleted file mode 100644
index 8e710ab..0000000
--- a/nyx/resources/tor-arm.svg
+++ /dev/null
@@ -1,1074 +0,0 @@
-<?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:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
- width="128"
- height="128"
- id="svg2"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="utilities-system-monitor.svg">
- <metadata
- id="metadata261">
- <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></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1024"
- inkscape:window-height="550"
- id="namedview259"
- showgrid="false"
- inkscape:zoom="2.3828125"
- inkscape:cx="64"
- inkscape:cy="63.692344"
- inkscape:window-x="0"
- inkscape:window-y="25"
- inkscape:window-maximized="1"
- inkscape:current-layer="layer1" />
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient4199">
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="0"
- id="stop4201" />
- <stop
- style="stop-color:white;stop-opacity:0"
- offset="1"
- id="stop4203" />
- </linearGradient>
- <linearGradient
- id="linearGradient4167">
- <stop
- style="stop-color:#171717;stop-opacity:1"
- offset="0"
- id="stop4169" />
- <stop
- style="stop-color:#777;stop-opacity:1"
- offset="1"
- id="stop4171" />
- </linearGradient>
- <linearGradient
- id="linearGradient4159">
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="0"
- id="stop4161" />
- <stop
- style="stop-color:white;stop-opacity:0"
- offset="1"
- id="stop4163" />
- </linearGradient>
- <linearGradient
- id="linearGradient4142">
- <stop
- style="stop-color:#e5ff00;stop-opacity:1"
- offset="0"
- id="stop4144" />
- <stop
- style="stop-color:#e5ff00;stop-opacity:0"
- offset="1"
- id="stop4146" />
- </linearGradient>
- <linearGradient
- id="linearGradient3399">
- <stop
- style="stop-color:yellow;stop-opacity:1"
- offset="0"
- id="stop3401" />
- <stop
- style="stop-color:yellow;stop-opacity:0"
- offset="1"
- id="stop3403" />
- </linearGradient>
- <linearGradient
- id="linearGradient3391">
- <stop
- style="stop-color:#ffff1d;stop-opacity:1"
- offset="0"
- id="stop3393" />
- <stop
- style="stop-color:#ffff6f;stop-opacity:0"
- offset="1"
- id="stop3395" />
- </linearGradient>
- <linearGradient
- id="linearGradient3383">
- <stop
- style="stop-color:yellow;stop-opacity:1"
- offset="0"
- id="stop3385" />
- <stop
- style="stop-color:yellow;stop-opacity:0"
- offset="1"
- id="stop3387" />
- </linearGradient>
- <linearGradient
- id="linearGradient4111">
- <stop
- style="stop-color:black;stop-opacity:1"
- offset="0"
- id="stop4113" />
- <stop
- style="stop-color:black;stop-opacity:0"
- offset="1"
- id="stop4115" />
- </linearGradient>
- <linearGradient
- id="linearGradient4031">
- <stop
- style="stop-color:#292929;stop-opacity:1"
- offset="0"
- id="stop4033" />
- <stop
- style="stop-color:#e9e9e9;stop-opacity:1"
- offset="1"
- id="stop4035" />
- </linearGradient>
- <linearGradient
- id="linearGradient4002">
- <stop
- style="stop-color:lime;stop-opacity:1"
- offset="0"
- id="stop4004" />
- <stop
- style="stop-color:#f0ff80;stop-opacity:0"
- offset="1"
- id="stop4006" />
- </linearGradient>
- <linearGradient
- id="linearGradient3785">
- <stop
- style="stop-color:black;stop-opacity:1"
- offset="0"
- id="stop3787" />
- <stop
- style="stop-color:black;stop-opacity:0"
- offset="1"
- id="stop3789" />
- </linearGradient>
- <linearGradient
- id="linearGradient3761">
- <stop
- style="stop-color:#f6f6f6;stop-opacity:1"
- offset="0"
- id="stop3763" />
- <stop
- style="stop-color:#5a5a5a;stop-opacity:1"
- offset="1"
- id="stop3765" />
- </linearGradient>
- <linearGradient
- id="linearGradient3749">
- <stop
- style="stop-color:#181818;stop-opacity:1"
- offset="0"
- id="stop3751" />
- <stop
- style="stop-color:#ababab;stop-opacity:1"
- offset="1"
- id="stop3753" />
- </linearGradient>
- <linearGradient
- id="linearGradient3737">
- <stop
- style="stop-color:gray;stop-opacity:1"
- offset="0"
- id="stop3739" />
- <stop
- style="stop-color:#232323;stop-opacity:1"
- offset="1"
- id="stop3741" />
- </linearGradient>
- <linearGradient
- id="linearGradient3729">
- <stop
- style="stop-color:#ededed;stop-opacity:1"
- offset="0"
- id="stop3731" />
- <stop
- style="stop-color:#bcbcbc;stop-opacity:1"
- offset="1"
- id="stop3733" />
- </linearGradient>
- <linearGradient
- id="linearGradient3570">
- <stop
- style="stop-color:black;stop-opacity:1"
- offset="0"
- id="stop3572" />
- <stop
- style="stop-color:black;stop-opacity:0"
- offset="1"
- id="stop3574" />
- </linearGradient>
- <linearGradient
- id="linearGradient3470">
- <stop
- style="stop-color:#ddd;stop-opacity:1"
- offset="0"
- id="stop3472" />
- <stop
- style="stop-color:#fbfbfb;stop-opacity:1"
- offset="1"
- id="stop3474" />
- </linearGradient>
- <linearGradient
- id="linearGradient3452">
- <stop
- style="stop-color:#979797;stop-opacity:1"
- offset="0"
- id="stop3454" />
- <stop
- style="stop-color:#454545;stop-opacity:1"
- offset="1"
- id="stop3456" />
- </linearGradient>
- <linearGradient
- id="linearGradient3440">
- <stop
- style="stop-color:black;stop-opacity:1"
- offset="0"
- id="stop3442" />
- <stop
- style="stop-color:black;stop-opacity:0"
- offset="1"
- id="stop3444" />
- </linearGradient>
- <linearGradient
- id="linearGradient3384">
- <stop
- style="stop-color:black;stop-opacity:1"
- offset="0"
- id="stop3386" />
- <stop
- style="stop-color:black;stop-opacity:0"
- offset="1"
- id="stop3388" />
- </linearGradient>
- <linearGradient
- id="linearGradient3292">
- <stop
- style="stop-color:#5e5e5e;stop-opacity:1"
- offset="0"
- id="stop3294" />
- <stop
- style="stop-color:#292929;stop-opacity:1"
- offset="1"
- id="stop3296" />
- </linearGradient>
- <linearGradient
- id="linearGradient3275">
- <stop
- style="stop-color:#323232;stop-opacity:1"
- offset="0"
- id="stop3277" />
- <stop
- style="stop-color:#1a1a1a;stop-opacity:1"
- offset="1"
- id="stop3279" />
- </linearGradient>
- <linearGradient
- id="linearGradient3265">
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="0"
- id="stop3267" />
- <stop
- style="stop-color:white;stop-opacity:0"
- offset="1"
- id="stop3269" />
- </linearGradient>
- <filter
- id="filter3162">
- <feGaussianBlur
- id="feGaussianBlur3164"
- stdDeviation="0.14753906"
- inkscape:collect="always" />
- </filter>
- <filter
- id="filter3193">
- <feGaussianBlur
- id="feGaussianBlur3195"
- stdDeviation="0.12753906"
- inkscape:collect="always" />
- </filter>
- <filter
- id="filter3247"
- height="1.60944"
- y="-0.30472"
- width="1.03826"
- x="-0.019130022">
- <feGaussianBlur
- id="feGaussianBlur3249"
- stdDeviation="0.89273437"
- inkscape:collect="always" />
- </filter>
- <radialGradient
- cx="64"
- cy="7.1979251"
- r="56"
- fx="64"
- fy="7.1979251"
- id="radialGradient3271"
- xlink:href="#linearGradient3265"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.236503,0,0,0.798045,-15.13621,10.25573)" />
- <radialGradient
- cx="56"
- cy="65.961678"
- r="44"
- fx="56"
- fy="64.752823"
- id="radialGradient3281"
- xlink:href="#linearGradient3292"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.206761,0,0,2.057714,-67.57862,-106.9325)" />
- <radialGradient
- cx="56"
- cy="60"
- r="44"
- fx="56"
- fy="99.821198"
- id="radialGradient3287"
- xlink:href="#linearGradient3275"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.497439,3.473066e-8,-3.238492e-8,1.3963,-27.85656,-45.05228)" />
- <radialGradient
- cx="56"
- cy="60"
- r="44"
- fx="56"
- fy="99.821198"
- id="radialGradient3289"
- xlink:href="#linearGradient3275"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.497439,3.473066e-8,-3.238492e-8,1.3963,-27.85656,-44.05228)" />
- <clipPath
- id="clipPath3361">
- <rect
- width="88"
- height="72"
- rx="5.0167508"
- ry="5.0167508"
- x="12"
- y="24"
- style="opacity:1;fill:url(#radialGradient3365);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3363" />
- </clipPath>
- <radialGradient
- cx="56"
- cy="65.961678"
- r="44"
- fx="56"
- fy="64.752823"
- id="radialGradient3365"
- xlink:href="#linearGradient3292"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.206761,0,0,2.057714,-67.57862,-106.9325)" />
- <linearGradient
- x1="52.513512"
- y1="97"
- x2="52.513512"
- y2="74.244766"
- id="linearGradient3390"
- xlink:href="#linearGradient3384"
- gradientUnits="userSpaceOnUse" />
- <clipPath
- id="clipPath3402">
- <rect
- width="88"
- height="72"
- rx="5.0167508"
- ry="5.0167508"
- x="12"
- y="24"
- style="opacity:1;fill:url(#radialGradient3406);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3404" />
- </clipPath>
- <radialGradient
- cx="56"
- cy="65.961678"
- r="44"
- fx="56"
- fy="64.752823"
- id="radialGradient3406"
- xlink:href="#linearGradient3292"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.206761,0,0,2.057714,-67.57862,-106.9325)" />
- <filter
- id="filter3424">
- <feGaussianBlur
- id="feGaussianBlur3426"
- stdDeviation="0.23507812"
- inkscape:collect="always" />
- </filter>
- <filter
- id="filter3430">
- <feGaussianBlur
- id="feGaussianBlur3432"
- stdDeviation="0.23507812"
- inkscape:collect="always" />
- </filter>
- <linearGradient
- x1="100"
- y1="92.763115"
- x2="100"
- y2="60"
- id="linearGradient3446"
- xlink:href="#linearGradient3440"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="100"
- y1="92.763115"
- x2="100"
- y2="60"
- id="linearGradient3450"
- xlink:href="#linearGradient3440"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(0,-120)" />
- <radialGradient
- cx="108.33566"
- cy="25.487402"
- r="4.171701"
- fx="108.33566"
- fy="25.487402"
- id="radialGradient3458"
- xlink:href="#linearGradient3452"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.432375,0,0,1.432375,-46.84166,-11.02012)" />
- <linearGradient
- x1="110.75722"
- y1="32.559616"
- x2="106.72433"
- y2="24.216215"
- id="linearGradient3476"
- xlink:href="#linearGradient3470"
- gradientUnits="userSpaceOnUse" />
- <filter
- id="filter3549"
- height="1.348368"
- y="-0.17418399"
- width="1.1806649"
- x="-0.090332433">
- <feGaussianBlur
- id="feGaussianBlur3551"
- stdDeviation="0.099971814"
- inkscape:collect="always" />
- </filter>
- <filter
- id="filter3553"
- height="1.2047423"
- y="-0.10237114"
- width="1.2103517"
- x="-0.10517583">
- <feGaussianBlur
- id="feGaussianBlur3555"
- stdDeviation="0.099971814"
- inkscape:collect="always" />
- </filter>
- <filter
- id="filter3557"
- height="1.348368"
- y="-0.17418399"
- width="1.1806649"
- x="-0.090332433">
- <feGaussianBlur
- id="feGaussianBlur3559"
- stdDeviation="0.099971814"
- inkscape:collect="always" />
- </filter>
- <filter
- id="filter3561"
- height="1.2047423"
- y="-0.10237114"
- width="1.2103517"
- x="-0.10517583">
- <feGaussianBlur
- id="feGaussianBlur3563"
- stdDeviation="0.099971814"
- inkscape:collect="always" />
- </filter>
- <linearGradient
- x1="111.58585"
- y1="31.213261"
- x2="116.79939"
- y2="35.079716"
- id="linearGradient3576"
- xlink:href="#linearGradient3570"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-0.559618,-0.203498)" />
- <filter
- id="filter3590">
- <feGaussianBlur
- id="feGaussianBlur3592"
- stdDeviation="0.29695312"
- inkscape:collect="always" />
- </filter>
- <linearGradient
- x1="111.58585"
- y1="31.213261"
- x2="116.79939"
- y2="35.079716"
- id="linearGradient3671"
- xlink:href="#linearGradient3570"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-0.559618,-0.203498)" />
- <radialGradient
- cx="108.33566"
- cy="25.487402"
- r="4.171701"
- fx="108.33566"
- fy="25.487402"
- id="radialGradient3673"
- xlink:href="#linearGradient3452"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.432375,0,0,1.432375,-46.84166,-11.02012)" />
- <linearGradient
- x1="110.75722"
- y1="32.559616"
- x2="106.72433"
- y2="24.216215"
- id="linearGradient3675"
- xlink:href="#linearGradient3470"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="111.58585"
- y1="31.213261"
- x2="116.79939"
- y2="35.079716"
- id="linearGradient3711"
- xlink:href="#linearGradient3570"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-0.559618,-0.203498)" />
- <radialGradient
- cx="108.33566"
- cy="25.487402"
- r="4.171701"
- fx="108.33566"
- fy="25.487402"
- id="radialGradient3713"
- xlink:href="#linearGradient3452"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.432375,0,0,1.432375,-46.84166,-11.02012)" />
- <linearGradient
- x1="110.75722"
- y1="32.559616"
- x2="106.72433"
- y2="24.216215"
- id="linearGradient3715"
- xlink:href="#linearGradient3470"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="110"
- y1="84"
- x2="110"
- y2="72.081078"
- id="linearGradient3735"
- xlink:href="#linearGradient3729"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="110"
- y1="84"
- x2="110"
- y2="88"
- id="linearGradient3743"
- xlink:href="#linearGradient3737"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="110"
- y1="84"
- x2="110"
- y2="72.081078"
- id="linearGradient3747"
- xlink:href="#linearGradient3729"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.2,0,-90.8)" />
- <radialGradient
- cx="110"
- cy="87.735802"
- r="4"
- fx="110"
- fy="87.735802"
- id="radialGradient3755"
- xlink:href="#linearGradient3749"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(5.343975,0,0,6.161922,-477.8373,-454.2492)" />
- <linearGradient
- x1="113.34818"
- y1="79.669319"
- x2="118.02862"
- y2="79.669319"
- id="linearGradient3791"
- xlink:href="#linearGradient3785"
- gradientUnits="userSpaceOnUse" />
- <filter
- id="filter3853"
- height="1.1794737"
- y="-0.089736843"
- width="1.6153383"
- x="-0.30766916">
- <feGaussianBlur
- id="feGaussianBlur3855"
- stdDeviation="0.54783699"
- inkscape:collect="always" />
- </filter>
- <linearGradient
- x1="98.899841"
- y1="40.170177"
- x2="98.899841"
- y2="104.503"
- id="linearGradient4008"
- xlink:href="#linearGradient4002"
- gradientUnits="userSpaceOnUse" />
- <clipPath
- id="clipPath4019">
- <rect
- width="88"
- height="72"
- rx="5.0167508"
- ry="5.0167508"
- x="12"
- y="24"
- style="opacity:0.65263157;fill:url(#linearGradient4023);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4021" />
- </clipPath>
- <linearGradient
- x1="100"
- y1="92.763115"
- x2="100"
- y2="60"
- id="linearGradient4023"
- xlink:href="#linearGradient3440"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="100"
- y1="92.763115"
- x2="100"
- y2="72.820351"
- id="linearGradient4027"
- xlink:href="#linearGradient3440"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="100"
- y1="65.697929"
- x2="95.716316"
- y2="65.697929"
- id="linearGradient4099"
- xlink:href="#linearGradient3440"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="100"
- y1="65.697929"
- x2="95.909744"
- y2="65.697929"
- id="linearGradient4103"
- xlink:href="#linearGradient3440"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-112,0)" />
- <linearGradient
- x1="48.9221"
- y1="24"
- x2="48.9221"
- y2="30.250481"
- id="linearGradient4107"
- xlink:href="#linearGradient3440"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-112,0)" />
- <radialGradient
- cx="64"
- cy="73.977821"
- r="52"
- fx="64"
- fy="73.977821"
- id="radialGradient4119"
- xlink:href="#linearGradient4111"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.285229,0,74.89936)"
- spreadMethod="reflect" />
- <filter
- id="filter4137"
- height="1.5494737"
- y="-0.27473684"
- width="1.0634008"
- x="-0.031700405">
- <feGaussianBlur
- id="feGaussianBlur4139"
- stdDeviation="1.3736842"
- inkscape:collect="always" />
- </filter>
- <clipPath
- id="clipPath3379">
- <rect
- width="88"
- height="72"
- rx="5.0167508"
- ry="5.0167508"
- x="-100"
- y="23"
- transform="scale(-1,1)"
- style="opacity:0.32105264;fill:black;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3381" />
- </clipPath>
- <linearGradient
- x1="100.11033"
- y1="69.474098"
- x2="-17.198158"
- y2="69.474098"
- id="linearGradient3389"
- xlink:href="#linearGradient3383"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="101.41602"
- y1="64.334373"
- x2="-35.975773"
- y2="64.334373"
- id="linearGradient3397"
- xlink:href="#linearGradient3391"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="99.727539"
- y1="63.027271"
- x2="-3.3565123"
- y2="63.027271"
- id="linearGradient3405"
- xlink:href="#linearGradient3399"
- gradientUnits="userSpaceOnUse" />
- <filter
- id="filter3411"
- height="1.3350769"
- y="-0.16753846"
- width="1.0821887"
- x="-0.04109434">
- <feGaussianBlur
- id="feGaussianBlur3413"
- stdDeviation="1.815"
- inkscape:collect="always" />
- </filter>
- <filter
- id="filter4138"
- height="1.252"
- y="-0.126"
- width="1.252"
- x="-0.126">
- <feGaussianBlur
- id="feGaussianBlur4140"
- stdDeviation="0.21"
- inkscape:collect="always" />
- </filter>
- <radialGradient
- cx="18"
- cy="102"
- r="2"
- fx="18"
- fy="102"
- id="radialGradient4148"
- xlink:href="#linearGradient4142"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(3.25543,0,0,3.25543,-40.59774,-230.0538)" />
- <linearGradient
- x1="20.930662"
- y1="96.872108"
- x2="23.156008"
- y2="105.17721"
- id="linearGradient4165"
- xlink:href="#linearGradient4159"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="34.736519"
- y1="106.93066"
- x2="21.263483"
- y2="100"
- id="linearGradient4173"
- xlink:href="#linearGradient4167"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.666667,0,0,1,5.333334,0)" />
- <filter
- id="filter4190">
- <feGaussianBlur
- id="feGaussianBlur4192"
- stdDeviation="2.6020349"
- inkscape:collect="always" />
- </filter>
- <linearGradient
- x1="29.355932"
- y1="27.119223"
- x2="35.527592"
- y2="50.152176"
- id="linearGradient4205"
- xlink:href="#linearGradient4199"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3440"
- id="linearGradient3238"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.4101341,0,0,1.4101341,-142.94128,-20.830999)"
- x1="100"
- y1="65.697929"
- x2="95.909744"
- y2="65.697929" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3440"
- id="linearGradient3240"
- gradientUnits="userSpaceOnUse"
- x1="100"
- y1="65.697929"
- x2="95.716316"
- y2="65.697929"
- gradientTransform="matrix(1.4101341,0,0,1.4101341,-14.993741,-20.830999)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3440"
- id="linearGradient3242"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.4101341,0,0,1.4101341,-142.94128,-20.830999)"
- x1="48.9221"
- y1="24"
- x2="48.9221"
- y2="30.250481" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4199"
- id="linearGradient3244"
- gradientUnits="userSpaceOnUse"
- x1="29.355932"
- y1="27.119223"
- x2="35.527592"
- y2="50.152176"
- gradientTransform="matrix(1.4101341,0,0,1.4101341,-14.993741,-20.830999)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3440"
- id="linearGradient3246"
- gradientUnits="userSpaceOnUse"
- x1="100"
- y1="92.763115"
- x2="100"
- y2="72.820351"
- gradientTransform="matrix(1.4101341,0,0,1.4101341,-14.993741,-20.830999)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3383"
- id="linearGradient3248"
- gradientUnits="userSpaceOnUse"
- x1="100.11033"
- y1="69.474098"
- x2="-17.198158"
- y2="69.474098" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3391"
- id="linearGradient3250"
- gradientUnits="userSpaceOnUse"
- x1="101.41602"
- y1="64.334373"
- x2="-35.975773"
- y2="64.334373" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3399"
- id="linearGradient3252"
- gradientUnits="userSpaceOnUse"
- x1="99.727539"
- y1="63.027271"
- x2="-3.3565123"
- y2="63.027271" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3440"
- id="linearGradient3254"
- gradientUnits="userSpaceOnUse"
- x1="100"
- y1="92.763115"
- x2="100"
- y2="60"
- gradientTransform="matrix(1.4101341,0,0,1.4101341,-14.993741,-20.830999)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3440"
- id="linearGradient3256"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.4101341,0,0,1.4101341,-14.993741,-148.3851)"
- x1="100"
- y1="92.763115"
- x2="100"
- y2="60" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3292"
- id="radialGradient3258"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(3.111829,0,0,2.9016527,-110.28866,-171.62017)"
- cx="56"
- cy="65.961678"
- fx="56"
- fy="64.752823"
- r="44" />
- </defs>
- <g
- id="layer1">
- <rect
- width="124.0918"
- height="101.52966"
- rx="7.0742917"
- ry="7.0742917"
- x="1.9278687"
- y="13.01222"
- style="fill:url(#radialGradient3258);fill-opacity:1;stroke:none"
- id="rect3273" />
- <g
- style="opacity:0.25789478;fill:#ff7e00;stroke:#d3d7cf"
- clip-path="url(#clipPath3361)"
- id="g3349"
- transform="matrix(1.4101341,0,0,1.4101341,-14.993741,-20.830999)">
- <path
- d="m 24.5,19.5 0,80"
- style="fill:#ff7e00;fill-rule:evenodd;stroke:#d3d7cf;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- id="path3300"
- inkscape:connector-curvature="0" />
- <path
- d="m 40.5,19.5 0,80"
- style="fill:#ff7e00;fill-rule:evenodd;stroke:#d3d7cf;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- id="path3307"
- inkscape:connector-curvature="0" />
- <path
- d="m 56.5,19.5 0,80"
- style="fill:#ff7e00;fill-rule:evenodd;stroke:#d3d7cf;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- id="path3309"
- inkscape:connector-curvature="0" />
- <path
- d="m 72.5,19.5 0,80"
- style="fill:#ff7e00;fill-rule:evenodd;stroke:#d3d7cf;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- id="path3311"
- inkscape:connector-curvature="0" />
- <path
- d="m 88.5,19.5 0,80"
- style="fill:#ff7e00;fill-rule:evenodd;stroke:#d3d7cf;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- id="path3317"
- inkscape:connector-curvature="0" />
- <path
- d="m 0.5,60.5 110.61729,0"
- style="fill:#ff7e00;fill-rule:evenodd;stroke:#d3d7cf;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- id="path3325"
- inkscape:connector-curvature="0" />
- <path
- d="m 0.5,79.5 110.61729,0"
- style="fill:#ff7e00;fill-rule:evenodd;stroke:#d3d7cf;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- id="path3327"
- inkscape:connector-curvature="0" />
- <path
- d="m 0.5,40.5 110.61729,0"
- style="fill:#ff7e00;fill-rule:evenodd;stroke:#d3d7cf;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- id="path3329"
- inkscape:connector-curvature="0" />
- </g>
- <rect
- width="124.0918"
- height="101.52966"
- rx="7.0742917"
- ry="7.0742917"
- x="1.9278687"
- y="-114.54188"
- transform="scale(1,-1)"
- style="opacity:0.32105264;fill:url(#linearGradient3256);fill-opacity:1;stroke:none"
- id="rect3448" />
- <rect
- width="124.0918"
- height="101.52966"
- rx="7.0742917"
- ry="7.0742917"
- x="1.9278687"
- y="13.01222"
- style="opacity:0.43684214;fill:url(#linearGradient3254);fill-opacity:1;stroke:none"
- id="rect4025" />
- <g
- transform="matrix(1.4101341,0,0,1.4101341,-14.993741,-19.420865)"
- clip-path="url(#clipPath3379)"
- id="g4010">
- <path
- d="M 16.246914,126.84803 -2.6446783,98.771282 12,79.49 l 12,0 12,-24 16,0 12,16 12,0 8,-12 15.306836,0 5.779584,0 -0.0494,65.38272"
- style="opacity:0.28494622;fill:url(#linearGradient3248);fill-opacity:1;fill-rule:evenodd;stroke:none"
- id="path3431"
- inkscape:connector-curvature="0" />
- <path
- d="m 4,59.49 8,20 12,0 12,-24 16,0 12,16 12,0 8,-12 15.306836,0 8.693164,0"
- style="fill:none;stroke:url(#linearGradient3250);stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3413"
- inkscape:connector-curvature="0" />
- <path
- d="m 4,59.49 8,20 12,0 12,-24 16,0 12,16 12,0 8,-12 15.306836,0 8.693164,0"
- style="fill:none;stroke:url(#linearGradient3252);stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3857"
- inkscape:connector-curvature="0" />
- </g>
- <rect
- width="124.0918"
- height="101.52966"
- rx="7.0742917"
- ry="7.0742917"
- x="1.9278687"
- y="13.01222"
- style="opacity:0.32105264;fill:url(#linearGradient3246);fill-opacity:1;stroke:none"
- id="rect3438" />
- <path
- d="m 9.0226062,13.012221 c -3.9191562,0 -7.0947373,3.175579 -7.0947373,7.094737 l 0,30.62635 C 25.678508,39.547637 58.966862,32.577831 95.833988,32.577831 c 10.395432,0 20.489952,0.541015 30.185682,1.586401 l 0,-14.057274 c 0,-3.919156 -3.17558,-7.094737 -7.09474,-7.094737 l -109.9023238,0 z"
- style="opacity:0.225;fill:url(#linearGradient3244);fill-opacity:1;stroke:none"
- id="rect4194"
- inkscape:connector-curvature="0" />
- <rect
- width="124.0918"
- height="101.52966"
- rx="7.0742917"
- ry="7.0742917"
- x="-126.01967"
- y="13.01222"
- transform="scale(-1,1)"
- style="opacity:0.32105264;fill:url(#linearGradient3242);fill-opacity:1;stroke:none"
- id="rect4105" />
- <rect
- width="124.0918"
- height="101.52966"
- rx="7.0742917"
- ry="7.0742917"
- x="1.9278687"
- y="13.01222"
- style="opacity:0.32105264;fill:url(#linearGradient3240);fill-opacity:1;stroke:none"
- id="rect4097" />
- <rect
- width="124.0918"
- height="101.52966"
- rx="7.0742917"
- ry="7.0742917"
- x="-126.01967"
- y="13.01222"
- transform="scale(-1,1)"
- style="opacity:0.32105264;fill:url(#linearGradient3238);fill-opacity:1;stroke:none"
- id="rect4101" />
- </g>
-</svg>
diff --git a/nyx/resources/tor-nyx.desktop b/nyx/resources/tor-nyx.desktop
new file mode 100644
index 0000000..faba9af
--- /dev/null
+++ b/nyx/resources/tor-nyx.desktop
@@ -0,0 +1,12 @@
+[Desktop Entry]
+Name=Tor monitor
+Name[es]=Monitor de Tor
+Comment=Status monitor for Tor routers
+Comment[es]=Monitor de estado para routers Tor
+GenericName=Monitor
+GenericName[es]=Monitor
+Exec=nyx -g
+Icon=tor-nyx
+Terminal=false
+Type=Application
+Categories=System;Monitor;GTK;
diff --git a/nyx/resources/tor-nyx.svg b/nyx/resources/tor-nyx.svg
new file mode 100644
index 0000000..8e710ab
--- /dev/null
+++ b/nyx/resources/tor-nyx.svg
@@ -0,0 +1,1074 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ width="128"
+ height="128"
+ id="svg2"
+ inkscape:version="0.48.1 r9760"
+ sodipodi:docname="utilities-system-monitor.svg">
+ <metadata
+ id="metadata261">
+ <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></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1024"
+ inkscape:window-height="550"
+ id="namedview259"
+ showgrid="false"
+ inkscape:zoom="2.3828125"
+ inkscape:cx="64"
+ inkscape:cy="63.692344"
+ inkscape:window-x="0"
+ inkscape:window-y="25"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="layer1" />
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient4199">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="stop4201" />
+ <stop
+ style="stop-color:white;stop-opacity:0"
+ offset="1"
+ id="stop4203" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4167">
+ <stop
+ style="stop-color:#171717;stop-opacity:1"
+ offset="0"
+ id="stop4169" />
+ <stop
+ style="stop-color:#777;stop-opacity:1"
+ offset="1"
+ id="stop4171" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4159">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="stop4161" />
+ <stop
+ style="stop-color:white;stop-opacity:0"
+ offset="1"
+ id="stop4163" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4142">
+ <stop
+ style="stop-color:#e5ff00;stop-opacity:1"
+ offset="0"
+ id="stop4144" />
+ <stop
+ style="stop-color:#e5ff00;stop-opacity:0"
+ offset="1"
+ id="stop4146" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3399">
+ <stop
+ style="stop-color:yellow;stop-opacity:1"
+ offset="0"
+ id="stop3401" />
+ <stop
+ style="stop-color:yellow;stop-opacity:0"
+ offset="1"
+ id="stop3403" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3391">
+ <stop
+ style="stop-color:#ffff1d;stop-opacity:1"
+ offset="0"
+ id="stop3393" />
+ <stop
+ style="stop-color:#ffff6f;stop-opacity:0"
+ offset="1"
+ id="stop3395" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3383">
+ <stop
+ style="stop-color:yellow;stop-opacity:1"
+ offset="0"
+ id="stop3385" />
+ <stop
+ style="stop-color:yellow;stop-opacity:0"
+ offset="1"
+ id="stop3387" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4111">
+ <stop
+ style="stop-color:black;stop-opacity:1"
+ offset="0"
+ id="stop4113" />
+ <stop
+ style="stop-color:black;stop-opacity:0"
+ offset="1"
+ id="stop4115" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4031">
+ <stop
+ style="stop-color:#292929;stop-opacity:1"
+ offset="0"
+ id="stop4033" />
+ <stop
+ style="stop-color:#e9e9e9;stop-opacity:1"
+ offset="1"
+ id="stop4035" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4002">
+ <stop
+ style="stop-color:lime;stop-opacity:1"
+ offset="0"
+ id="stop4004" />
+ <stop
+ style="stop-color:#f0ff80;stop-opacity:0"
+ offset="1"
+ id="stop4006" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3785">
+ <stop
+ style="stop-color:black;stop-opacity:1"
+ offset="0"
+ id="stop3787" />
+ <stop
+ style="stop-color:black;stop-opacity:0"
+ offset="1"
+ id="stop3789" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3761">
+ <stop
+ style="stop-color:#f6f6f6;stop-opacity:1"
+ offset="0"
+ id="stop3763" />
+ <stop
+ style="stop-color:#5a5a5a;stop-opacity:1"
+ offset="1"
+ id="stop3765" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3749">
+ <stop
+ style="stop-color:#181818;stop-opacity:1"
+ offset="0"
+ id="stop3751" />
+ <stop
+ style="stop-color:#ababab;stop-opacity:1"
+ offset="1"
+ id="stop3753" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3737">
+ <stop
+ style="stop-color:gray;stop-opacity:1"
+ offset="0"
+ id="stop3739" />
+ <stop
+ style="stop-color:#232323;stop-opacity:1"
+ offset="1"
+ id="stop3741" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3729">
+ <stop
+ style="stop-color:#ededed;stop-opacity:1"
+ offset="0"
+ id="stop3731" />
+ <stop
+ style="stop-color:#bcbcbc;stop-opacity:1"
+ offset="1"
+ id="stop3733" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3570">
+ <stop
+ style="stop-color:black;stop-opacity:1"
+ offset="0"
+ id="stop3572" />
+ <stop
+ style="stop-color:black;stop-opacity:0"
+ offset="1"
+ id="stop3574" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3470">
+ <stop
+ style="stop-color:#ddd;stop-opacity:1"
+ offset="0"
+ id="stop3472" />
+ <stop
+ style="stop-color:#fbfbfb;stop-opacity:1"
+ offset="1"
+ id="stop3474" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3452">
+ <stop
+ style="stop-color:#979797;stop-opacity:1"
+ offset="0"
+ id="stop3454" />
+ <stop
+ style="stop-color:#454545;stop-opacity:1"
+ offset="1"
+ id="stop3456" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3440">
+ <stop
+ style="stop-color:black;stop-opacity:1"
+ offset="0"
+ id="stop3442" />
+ <stop
+ style="stop-color:black;stop-opacity:0"
+ offset="1"
+ id="stop3444" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3384">
+ <stop
+ style="stop-color:black;stop-opacity:1"
+ offset="0"
+ id="stop3386" />
+ <stop
+ style="stop-color:black;stop-opacity:0"
+ offset="1"
+ id="stop3388" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3292">
+ <stop
+ style="stop-color:#5e5e5e;stop-opacity:1"
+ offset="0"
+ id="stop3294" />
+ <stop
+ style="stop-color:#292929;stop-opacity:1"
+ offset="1"
+ id="stop3296" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3275">
+ <stop
+ style="stop-color:#323232;stop-opacity:1"
+ offset="0"
+ id="stop3277" />
+ <stop
+ style="stop-color:#1a1a1a;stop-opacity:1"
+ offset="1"
+ id="stop3279" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3265">
+ <stop
+ style="stop-color:white;stop-opacity:1"
+ offset="0"
+ id="stop3267" />
+ <stop
+ style="stop-color:white;stop-opacity:0"
+ offset="1"
+ id="stop3269" />
+ </linearGradient>
+ <filter
+ id="filter3162">
+ <feGaussianBlur
+ id="feGaussianBlur3164"
+ stdDeviation="0.14753906"
+ inkscape:collect="always" />
+ </filter>
+ <filter
+ id="filter3193">
+ <feGaussianBlur
+ id="feGaussianBlur3195"
+ stdDeviation="0.12753906"
+ inkscape:collect="always" />
+ </filter>
+ <filter
+ id="filter3247"
+ height="1.60944"
+ y="-0.30472"
+ width="1.03826"
+ x="-0.019130022">
+ <feGaussianBlur
+ id="feGaussianBlur3249"
+ stdDeviation="0.89273437"
+ inkscape:collect="always" />
+ </filter>
+ <radialGradient
+ cx="64"
+ cy="7.1979251"
+ r="56"
+ fx="64"
+ fy="7.1979251"
+ id="radialGradient3271"
+ xlink:href="#linearGradient3265"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.236503,0,0,0.798045,-15.13621,10.25573)" />
+ <radialGradient
+ cx="56"
+ cy="65.961678"
+ r="44"
+ fx="56"
+ fy="64.752823"
+ id="radialGradient3281"
+ xlink:href="#linearGradient3292"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.206761,0,0,2.057714,-67.57862,-106.9325)" />
+ <radialGradient
+ cx="56"
+ cy="60"
+ r="44"
+ fx="56"
+ fy="99.821198"
+ id="radialGradient3287"
+ xlink:href="#linearGradient3275"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.497439,3.473066e-8,-3.238492e-8,1.3963,-27.85656,-45.05228)" />
+ <radialGradient
+ cx="56"
+ cy="60"
+ r="44"
+ fx="56"
+ fy="99.821198"
+ id="radialGradient3289"
+ xlink:href="#linearGradient3275"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.497439,3.473066e-8,-3.238492e-8,1.3963,-27.85656,-44.05228)" />
+ <clipPath
+ id="clipPath3361">
+ <rect
+ width="88"
+ height="72"
+ rx="5.0167508"
+ ry="5.0167508"
+ x="12"
+ y="24"
+ style="opacity:1;fill:url(#radialGradient3365);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3363" />
+ </clipPath>
+ <radialGradient
+ cx="56"
+ cy="65.961678"
+ r="44"
+ fx="56"
+ fy="64.752823"
+ id="radialGradient3365"
+ xlink:href="#linearGradient3292"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.206761,0,0,2.057714,-67.57862,-106.9325)" />
+ <linearGradient
+ x1="52.513512"
+ y1="97"
+ x2="52.513512"
+ y2="74.244766"
+ id="linearGradient3390"
+ xlink:href="#linearGradient3384"
+ gradientUnits="userSpaceOnUse" />
+ <clipPath
+ id="clipPath3402">
+ <rect
+ width="88"
+ height="72"
+ rx="5.0167508"
+ ry="5.0167508"
+ x="12"
+ y="24"
+ style="opacity:1;fill:url(#radialGradient3406);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3404" />
+ </clipPath>
+ <radialGradient
+ cx="56"
+ cy="65.961678"
+ r="44"
+ fx="56"
+ fy="64.752823"
+ id="radialGradient3406"
+ xlink:href="#linearGradient3292"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.206761,0,0,2.057714,-67.57862,-106.9325)" />
+ <filter
+ id="filter3424">
+ <feGaussianBlur
+ id="feGaussianBlur3426"
+ stdDeviation="0.23507812"
+ inkscape:collect="always" />
+ </filter>
+ <filter
+ id="filter3430">
+ <feGaussianBlur
+ id="feGaussianBlur3432"
+ stdDeviation="0.23507812"
+ inkscape:collect="always" />
+ </filter>
+ <linearGradient
+ x1="100"
+ y1="92.763115"
+ x2="100"
+ y2="60"
+ id="linearGradient3446"
+ xlink:href="#linearGradient3440"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="100"
+ y1="92.763115"
+ x2="100"
+ y2="60"
+ id="linearGradient3450"
+ xlink:href="#linearGradient3440"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0,-120)" />
+ <radialGradient
+ cx="108.33566"
+ cy="25.487402"
+ r="4.171701"
+ fx="108.33566"
+ fy="25.487402"
+ id="radialGradient3458"
+ xlink:href="#linearGradient3452"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.432375,0,0,1.432375,-46.84166,-11.02012)" />
+ <linearGradient
+ x1="110.75722"
+ y1="32.559616"
+ x2="106.72433"
+ y2="24.216215"
+ id="linearGradient3476"
+ xlink:href="#linearGradient3470"
+ gradientUnits="userSpaceOnUse" />
+ <filter
+ id="filter3549"
+ height="1.348368"
+ y="-0.17418399"
+ width="1.1806649"
+ x="-0.090332433">
+ <feGaussianBlur
+ id="feGaussianBlur3551"
+ stdDeviation="0.099971814"
+ inkscape:collect="always" />
+ </filter>
+ <filter
+ id="filter3553"
+ height="1.2047423"
+ y="-0.10237114"
+ width="1.2103517"
+ x="-0.10517583">
+ <feGaussianBlur
+ id="feGaussianBlur3555"
+ stdDeviation="0.099971814"
+ inkscape:collect="always" />
+ </filter>
+ <filter
+ id="filter3557"
+ height="1.348368"
+ y="-0.17418399"
+ width="1.1806649"
+ x="-0.090332433">
+ <feGaussianBlur
+ id="feGaussianBlur3559"
+ stdDeviation="0.099971814"
+ inkscape:collect="always" />
+ </filter>
+ <filter
+ id="filter3561"
+ height="1.2047423"
+ y="-0.10237114"
+ width="1.2103517"
+ x="-0.10517583">
+ <feGaussianBlur
+ id="feGaussianBlur3563"
+ stdDeviation="0.099971814"
+ inkscape:collect="always" />
+ </filter>
+ <linearGradient
+ x1="111.58585"
+ y1="31.213261"
+ x2="116.79939"
+ y2="35.079716"
+ id="linearGradient3576"
+ xlink:href="#linearGradient3570"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.559618,-0.203498)" />
+ <filter
+ id="filter3590">
+ <feGaussianBlur
+ id="feGaussianBlur3592"
+ stdDeviation="0.29695312"
+ inkscape:collect="always" />
+ </filter>
+ <linearGradient
+ x1="111.58585"
+ y1="31.213261"
+ x2="116.79939"
+ y2="35.079716"
+ id="linearGradient3671"
+ xlink:href="#linearGradient3570"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.559618,-0.203498)" />
+ <radialGradient
+ cx="108.33566"
+ cy="25.487402"
+ r="4.171701"
+ fx="108.33566"
+ fy="25.487402"
+ id="radialGradient3673"
+ xlink:href="#linearGradient3452"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.432375,0,0,1.432375,-46.84166,-11.02012)" />
+ <linearGradient
+ x1="110.75722"
+ y1="32.559616"
+ x2="106.72433"
+ y2="24.216215"
+ id="linearGradient3675"
+ xlink:href="#linearGradient3470"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="111.58585"
+ y1="31.213261"
+ x2="116.79939"
+ y2="35.079716"
+ id="linearGradient3711"
+ xlink:href="#linearGradient3570"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.559618,-0.203498)" />
+ <radialGradient
+ cx="108.33566"
+ cy="25.487402"
+ r="4.171701"
+ fx="108.33566"
+ fy="25.487402"
+ id="radialGradient3713"
+ xlink:href="#linearGradient3452"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.432375,0,0,1.432375,-46.84166,-11.02012)" />
+ <linearGradient
+ x1="110.75722"
+ y1="32.559616"
+ x2="106.72433"
+ y2="24.216215"
+ id="linearGradient3715"
+ xlink:href="#linearGradient3470"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="110"
+ y1="84"
+ x2="110"
+ y2="72.081078"
+ id="linearGradient3735"
+ xlink:href="#linearGradient3729"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="110"
+ y1="84"
+ x2="110"
+ y2="88"
+ id="linearGradient3743"
+ xlink:href="#linearGradient3737"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="110"
+ y1="84"
+ x2="110"
+ y2="72.081078"
+ id="linearGradient3747"
+ xlink:href="#linearGradient3729"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.2,0,-90.8)" />
+ <radialGradient
+ cx="110"
+ cy="87.735802"
+ r="4"
+ fx="110"
+ fy="87.735802"
+ id="radialGradient3755"
+ xlink:href="#linearGradient3749"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(5.343975,0,0,6.161922,-477.8373,-454.2492)" />
+ <linearGradient
+ x1="113.34818"
+ y1="79.669319"
+ x2="118.02862"
+ y2="79.669319"
+ id="linearGradient3791"
+ xlink:href="#linearGradient3785"
+ gradientUnits="userSpaceOnUse" />
+ <filter
+ id="filter3853"
+ height="1.1794737"
+ y="-0.089736843"
+ width="1.6153383"
+ x="-0.30766916">
+ <feGaussianBlur
+ id="feGaussianBlur3855"
+ stdDeviation="0.54783699"
+ inkscape:collect="always" />
+ </filter>
+ <linearGradient
+ x1="98.899841"
+ y1="40.170177"
+ x2="98.899841"
+ y2="104.503"
+ id="linearGradient4008"
+ xlink:href="#linearGradient4002"
+ gradientUnits="userSpaceOnUse" />
+ <clipPath
+ id="clipPath4019">
+ <rect
+ width="88"
+ height="72"
+ rx="5.0167508"
+ ry="5.0167508"
+ x="12"
+ y="24"
+ style="opacity:0.65263157;fill:url(#linearGradient4023);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4021" />
+ </clipPath>
+ <linearGradient
+ x1="100"
+ y1="92.763115"
+ x2="100"
+ y2="60"
+ id="linearGradient4023"
+ xlink:href="#linearGradient3440"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="100"
+ y1="92.763115"
+ x2="100"
+ y2="72.820351"
+ id="linearGradient4027"
+ xlink:href="#linearGradient3440"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="100"
+ y1="65.697929"
+ x2="95.716316"
+ y2="65.697929"
+ id="linearGradient4099"
+ xlink:href="#linearGradient3440"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="100"
+ y1="65.697929"
+ x2="95.909744"
+ y2="65.697929"
+ id="linearGradient4103"
+ xlink:href="#linearGradient3440"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-112,0)" />
+ <linearGradient
+ x1="48.9221"
+ y1="24"
+ x2="48.9221"
+ y2="30.250481"
+ id="linearGradient4107"
+ xlink:href="#linearGradient3440"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-112,0)" />
+ <radialGradient
+ cx="64"
+ cy="73.977821"
+ r="52"
+ fx="64"
+ fy="73.977821"
+ id="radialGradient4119"
+ xlink:href="#linearGradient4111"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.285229,0,74.89936)"
+ spreadMethod="reflect" />
+ <filter
+ id="filter4137"
+ height="1.5494737"
+ y="-0.27473684"
+ width="1.0634008"
+ x="-0.031700405">
+ <feGaussianBlur
+ id="feGaussianBlur4139"
+ stdDeviation="1.3736842"
+ inkscape:collect="always" />
+ </filter>
+ <clipPath
+ id="clipPath3379">
+ <rect
+ width="88"
+ height="72"
+ rx="5.0167508"
+ ry="5.0167508"
+ x="-100"
+ y="23"
+ transform="scale(-1,1)"
+ style="opacity:0.32105264;fill:black;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3381" />
+ </clipPath>
+ <linearGradient
+ x1="100.11033"
+ y1="69.474098"
+ x2="-17.198158"
+ y2="69.474098"
+ id="linearGradient3389"
+ xlink:href="#linearGradient3383"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="101.41602"
+ y1="64.334373"
+ x2="-35.975773"
+ y2="64.334373"
+ id="linearGradient3397"
+ xlink:href="#linearGradient3391"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="99.727539"
+ y1="63.027271"
+ x2="-3.3565123"
+ y2="63.027271"
+ id="linearGradient3405"
+ xlink:href="#linearGradient3399"
+ gradientUnits="userSpaceOnUse" />
+ <filter
+ id="filter3411"
+ height="1.3350769"
+ y="-0.16753846"
+ width="1.0821887"
+ x="-0.04109434">
+ <feGaussianBlur
+ id="feGaussianBlur3413"
+ stdDeviation="1.815"
+ inkscape:collect="always" />
+ </filter>
+ <filter
+ id="filter4138"
+ height="1.252"
+ y="-0.126"
+ width="1.252"
+ x="-0.126">
+ <feGaussianBlur
+ id="feGaussianBlur4140"
+ stdDeviation="0.21"
+ inkscape:collect="always" />
+ </filter>
+ <radialGradient
+ cx="18"
+ cy="102"
+ r="2"
+ fx="18"
+ fy="102"
+ id="radialGradient4148"
+ xlink:href="#linearGradient4142"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.25543,0,0,3.25543,-40.59774,-230.0538)" />
+ <linearGradient
+ x1="20.930662"
+ y1="96.872108"
+ x2="23.156008"
+ y2="105.17721"
+ id="linearGradient4165"
+ xlink:href="#linearGradient4159"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="34.736519"
+ y1="106.93066"
+ x2="21.263483"
+ y2="100"
+ id="linearGradient4173"
+ xlink:href="#linearGradient4167"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.666667,0,0,1,5.333334,0)" />
+ <filter
+ id="filter4190">
+ <feGaussianBlur
+ id="feGaussianBlur4192"
+ stdDeviation="2.6020349"
+ inkscape:collect="always" />
+ </filter>
+ <linearGradient
+ x1="29.355932"
+ y1="27.119223"
+ x2="35.527592"
+ y2="50.152176"
+ id="linearGradient4205"
+ xlink:href="#linearGradient4199"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3440"
+ id="linearGradient3238"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.4101341,0,0,1.4101341,-142.94128,-20.830999)"
+ x1="100"
+ y1="65.697929"
+ x2="95.909744"
+ y2="65.697929" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3440"
+ id="linearGradient3240"
+ gradientUnits="userSpaceOnUse"
+ x1="100"
+ y1="65.697929"
+ x2="95.716316"
+ y2="65.697929"
+ gradientTransform="matrix(1.4101341,0,0,1.4101341,-14.993741,-20.830999)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3440"
+ id="linearGradient3242"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.4101341,0,0,1.4101341,-142.94128,-20.830999)"
+ x1="48.9221"
+ y1="24"
+ x2="48.9221"
+ y2="30.250481" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4199"
+ id="linearGradient3244"
+ gradientUnits="userSpaceOnUse"
+ x1="29.355932"
+ y1="27.119223"
+ x2="35.527592"
+ y2="50.152176"
+ gradientTransform="matrix(1.4101341,0,0,1.4101341,-14.993741,-20.830999)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3440"
+ id="linearGradient3246"
+ gradientUnits="userSpaceOnUse"
+ x1="100"
+ y1="92.763115"
+ x2="100"
+ y2="72.820351"
+ gradientTransform="matrix(1.4101341,0,0,1.4101341,-14.993741,-20.830999)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3383"
+ id="linearGradient3248"
+ gradientUnits="userSpaceOnUse"
+ x1="100.11033"
+ y1="69.474098"
+ x2="-17.198158"
+ y2="69.474098" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3391"
+ id="linearGradient3250"
+ gradientUnits="userSpaceOnUse"
+ x1="101.41602"
+ y1="64.334373"
+ x2="-35.975773"
+ y2="64.334373" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3399"
+ id="linearGradient3252"
+ gradientUnits="userSpaceOnUse"
+ x1="99.727539"
+ y1="63.027271"
+ x2="-3.3565123"
+ y2="63.027271" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3440"
+ id="linearGradient3254"
+ gradientUnits="userSpaceOnUse"
+ x1="100"
+ y1="92.763115"
+ x2="100"
+ y2="60"
+ gradientTransform="matrix(1.4101341,0,0,1.4101341,-14.993741,-20.830999)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3440"
+ id="linearGradient3256"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.4101341,0,0,1.4101341,-14.993741,-148.3851)"
+ x1="100"
+ y1="92.763115"
+ x2="100"
+ y2="60" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3292"
+ id="radialGradient3258"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.111829,0,0,2.9016527,-110.28866,-171.62017)"
+ cx="56"
+ cy="65.961678"
+ fx="56"
+ fy="64.752823"
+ r="44" />
+ </defs>
+ <g
+ id="layer1">
+ <rect
+ width="124.0918"
+ height="101.52966"
+ rx="7.0742917"
+ ry="7.0742917"
+ x="1.9278687"
+ y="13.01222"
+ style="fill:url(#radialGradient3258);fill-opacity:1;stroke:none"
+ id="rect3273" />
+ <g
+ style="opacity:0.25789478;fill:#ff7e00;stroke:#d3d7cf"
+ clip-path="url(#clipPath3361)"
+ id="g3349"
+ transform="matrix(1.4101341,0,0,1.4101341,-14.993741,-20.830999)">
+ <path
+ d="m 24.5,19.5 0,80"
+ style="fill:#ff7e00;fill-rule:evenodd;stroke:#d3d7cf;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="path3300"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 40.5,19.5 0,80"
+ style="fill:#ff7e00;fill-rule:evenodd;stroke:#d3d7cf;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="path3307"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 56.5,19.5 0,80"
+ style="fill:#ff7e00;fill-rule:evenodd;stroke:#d3d7cf;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="path3309"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 72.5,19.5 0,80"
+ style="fill:#ff7e00;fill-rule:evenodd;stroke:#d3d7cf;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="path3311"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 88.5,19.5 0,80"
+ style="fill:#ff7e00;fill-rule:evenodd;stroke:#d3d7cf;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="path3317"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 0.5,60.5 110.61729,0"
+ style="fill:#ff7e00;fill-rule:evenodd;stroke:#d3d7cf;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="path3325"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 0.5,79.5 110.61729,0"
+ style="fill:#ff7e00;fill-rule:evenodd;stroke:#d3d7cf;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="path3327"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 0.5,40.5 110.61729,0"
+ style="fill:#ff7e00;fill-rule:evenodd;stroke:#d3d7cf;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="path3329"
+ inkscape:connector-curvature="0" />
+ </g>
+ <rect
+ width="124.0918"
+ height="101.52966"
+ rx="7.0742917"
+ ry="7.0742917"
+ x="1.9278687"
+ y="-114.54188"
+ transform="scale(1,-1)"
+ style="opacity:0.32105264;fill:url(#linearGradient3256);fill-opacity:1;stroke:none"
+ id="rect3448" />
+ <rect
+ width="124.0918"
+ height="101.52966"
+ rx="7.0742917"
+ ry="7.0742917"
+ x="1.9278687"
+ y="13.01222"
+ style="opacity:0.43684214;fill:url(#linearGradient3254);fill-opacity:1;stroke:none"
+ id="rect4025" />
+ <g
+ transform="matrix(1.4101341,0,0,1.4101341,-14.993741,-19.420865)"
+ clip-path="url(#clipPath3379)"
+ id="g4010">
+ <path
+ d="M 16.246914,126.84803 -2.6446783,98.771282 12,79.49 l 12,0 12,-24 16,0 12,16 12,0 8,-12 15.306836,0 5.779584,0 -0.0494,65.38272"
+ style="opacity:0.28494622;fill:url(#linearGradient3248);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ id="path3431"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 4,59.49 8,20 12,0 12,-24 16,0 12,16 12,0 8,-12 15.306836,0 8.693164,0"
+ style="fill:none;stroke:url(#linearGradient3250);stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3413"
+ inkscape:connector-curvature="0" />
+ <path
+ d="m 4,59.49 8,20 12,0 12,-24 16,0 12,16 12,0 8,-12 15.306836,0 8.693164,0"
+ style="fill:none;stroke:url(#linearGradient3252);stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3857"
+ inkscape:connector-curvature="0" />
+ </g>
+ <rect
+ width="124.0918"
+ height="101.52966"
+ rx="7.0742917"
+ ry="7.0742917"
+ x="1.9278687"
+ y="13.01222"
+ style="opacity:0.32105264;fill:url(#linearGradient3246);fill-opacity:1;stroke:none"
+ id="rect3438" />
+ <path
+ d="m 9.0226062,13.012221 c -3.9191562,0 -7.0947373,3.175579 -7.0947373,7.094737 l 0,30.62635 C 25.678508,39.547637 58.966862,32.577831 95.833988,32.577831 c 10.395432,0 20.489952,0.541015 30.185682,1.586401 l 0,-14.057274 c 0,-3.919156 -3.17558,-7.094737 -7.09474,-7.094737 l -109.9023238,0 z"
+ style="opacity:0.225;fill:url(#linearGradient3244);fill-opacity:1;stroke:none"
+ id="rect4194"
+ inkscape:connector-curvature="0" />
+ <rect
+ width="124.0918"
+ height="101.52966"
+ rx="7.0742917"
+ ry="7.0742917"
+ x="-126.01967"
+ y="13.01222"
+ transform="scale(-1,1)"
+ style="opacity:0.32105264;fill:url(#linearGradient3242);fill-opacity:1;stroke:none"
+ id="rect4105" />
+ <rect
+ width="124.0918"
+ height="101.52966"
+ rx="7.0742917"
+ ry="7.0742917"
+ x="1.9278687"
+ y="13.01222"
+ style="opacity:0.32105264;fill:url(#linearGradient3240);fill-opacity:1;stroke:none"
+ id="rect4097" />
+ <rect
+ width="124.0918"
+ height="101.52966"
+ rx="7.0742917"
+ ry="7.0742917"
+ x="-126.01967"
+ y="13.01222"
+ transform="scale(-1,1)"
+ style="opacity:0.32105264;fill:url(#linearGradient3238);fill-opacity:1;stroke:none"
+ id="rect4101" />
+ </g>
+</svg>
1
0
commit 3a745a32f8323bbdf323e35eb4c7f0be84d9c6d6
Author: Damian Johnson <atagar(a)torproject.org>
Date: Sun Jun 7 13:39:58 2015 -0700
Rewrite our setup.py
So much better. This borrows tricks from...
https://the-hitchhikers-guide-to-packaging.readthedocs.org/en/latest/specif…
... to make a custom installer class rather than piling hacks on distutils as
we previously did. In particular...
* Installer works once again (ongoing rewrite broke it).
* We can now install using python3. The codebase though isn't quite python3
compatible just yet.
* We now support --man-page and --sample-path arguments for customizing those
locations.
* Test coverage for installation. This is similar to a test I recently wrote
for Stem.
---
install | 15 ----
nyx/__init__.py | 12 ++-
nyx/starter.py | 12 +--
nyx/util/__init__.py | 2 +-
setup.py | 225 ++++++++++++++++++++++++--------------------------
test/installation.py | 39 +++++++++
6 files changed, 162 insertions(+), 143 deletions(-)
diff --git a/install b/install
deleted file mode 100755
index be1f054..0000000
--- a/install
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh
-python src/prereq.py
-
-if [ $? = 0 ]; then
- python setup.py -q install
-
- # provide notice if we installed successfully
- if [ $? = 0 ]; then
- echo "installed to /usr/share/nyx"
- fi
-
- # cleans up the automatically built temporary files
- rm -rf ./build
-fi
-
diff --git a/nyx/__init__.py b/nyx/__init__.py
index c38b4f7..65e3c71 100644
--- a/nyx/__init__.py
+++ b/nyx/__init__.py
@@ -2,8 +2,12 @@
Tor curses monitoring application.
"""
-__version__ = '1.4.6_dev'
+__version__ = '1.4.6-dev'
__release_date__ = 'April 28, 2011'
+__author__ = 'Damian Johnson'
+__contact__ = 'atagar(a)torproject.org'
+__url__ = 'http://www.atagar.com/arm/'
+__license__ = 'GPLv3'
__all__ = [
'arguments',
@@ -33,15 +37,15 @@ def main():
else:
advice = ', you can find it at https://stem.torproject.org/download.html'
- print 'nyx requires stem' + advice
+ print('nyx requires stem' + advice)
elif exc.message == 'No module named curses':
if distutils.spawn.find_executable('apt-get') is not None:
advice = ", try running 'sudo apt-get install python-curses'"
else:
advice = '' # not sure what to do for other platforms
- print 'nyx requires curses' + advice
+ print('nyx requires curses' + advice)
else:
- print 'Unable to start nyx: %s' % exc
+ print('Unable to start nyx: %s' % exc)
sys.exit(1)
diff --git a/nyx/starter.py b/nyx/starter.py
index 87937ed..d541730 100644
--- a/nyx/starter.py
+++ b/nyx/starter.py
@@ -35,22 +35,22 @@ def main(config):
args = nyx.arguments.parse(sys.argv[1:])
config.set('startup.events', args.logged_events)
except ValueError as exc:
- print exc
+ print(exc)
sys.exit(1)
if args.print_help:
- print nyx.arguments.get_help()
+ print(nyx.arguments.get_help())
sys.exit()
elif args.print_version:
- print nyx.arguments.get_version()
+ print(nyx.arguments.get_version())
sys.exit()
if args.debug_path is not None:
try:
_setup_debug_logging(args)
- print msg('debug.saving_to_path', path = args.debug_path)
+ print(msg('debug.saving_to_path', path = args.debug_path))
except IOError as exc:
- print msg('debug.unable_to_write_file', path = args.debug_path, error = exc.strerror)
+ print(msg('debug.unable_to_write_file', path = args.debug_path, error = exc.strerror))
sys.exit(1)
_load_user_nyxrc(args.config)
@@ -91,7 +91,7 @@ def main(config):
curses.wrapper(nyx.controller.start_nyx)
except UnboundLocalError as exc:
if os.environ['TERM'] != 'xterm':
- print msg('setup.unknown_term', term = os.environ['TERM'])
+ print(msg('setup.unknown_term', term = os.environ['TERM']))
else:
raise exc
except KeyboardInterrupt:
diff --git a/nyx/util/__init__.py b/nyx/util/__init__.py
index 58e739c..13cb6db 100644
--- a/nyx/util/__init__.py
+++ b/nyx/util/__init__.py
@@ -28,7 +28,7 @@ TESTING = False
try:
uses_settings = stem.util.conf.uses_settings('nyx', os.path.join(BASE_DIR, 'config'), lazy_load = False)
except IOError as exc:
- print "Unable to load nyx's internal configurations: %s" % exc
+ print("Unable to load nyx's internal configurations: %s" % exc)
sys.exit(1)
diff --git a/setup.py b/setup.py
index c484ea1..a54ff89 100644
--- a/setup.py
+++ b/setup.py
@@ -1,125 +1,116 @@
#!/usr/bin/env python
-import os
-import sys
+# Copyright 2015, Damian Johnson and The Tor Project
+# See LICENSE for licensing information
+
import gzip
-import tempfile
-from nyx.version import VERSION
+import os
+import shutil
+import stat
+
+import nyx
+
+from distutils import log
from distutils.core import setup
+from distutils.command.install import install
-def getResources(dst, sourceDir):
- """
- Provides a list of tuples of the form...
- [(destination, (file1, file2...)), ...]
+DEFAULT_MAN_PAGE_PATH = '/usr/share/man/man1/nyx.1.gz'
+DEFAULT_SAMPLE_PATH = '/usr/share/doc/nyx/nyxrc.sample'
+
+
+def mkdir_for(path):
+ path_dir = os.path.dirname(path)
+
+ if not os.path.exists(path_dir):
+ try:
+ os.makedirs(path_dir)
+ except OSError as exc:
+ raise OSError(None, "unable to make directory %s (%s)" % (path_dir, exc.strerror.lower()))
+
+
+def install_man_page(source, dest):
+ if not os.path.exists(source):
+ raise OSError(None, "man page doesn't exist at '%s'" % source)
- for the given contents of the nyx directory (that's right, distutils isn't
- smart enough to know how to copy directories).
+ mkdir_for(dest)
+ open_func = gzip.open if dest.endswith('.gz') else open
+
+ with open(source, 'rb') as source_file:
+ with open_func(dest, 'wb') as dest_file:
+ dest_file.write(source_file.read())
+ log.info("installed man page to '%s'" % dest)
+
+
+def install_sample(source, dest):
+ if not os.path.exists(source):
+ raise OSError(None, "nyxrc sample doesn't exist at '%s'" % source)
+
+ mkdir_for(dest)
+ shutil.copyfile(source, dest)
+ log.info("installed sample nyxrc to '%s'" % dest)
+
+
+class NyxInstaller(install):
"""
+ Nyx installer. This adds the following additional options...
+
+ --man-page [path]
+ --sample-path [path]
+
+ If the man page path ends in '.gz' it will be compressed. Empty paths such
+ as...
- results = []
-
- for root, _, files in os.walk(os.path.join('nyx', sourceDir)):
- if files:
- fileListing = tuple([os.path.join(root, file) for file in files])
- results.append((os.path.join(dst, root[4:]), fileListing))
-
- return results
-
-# Use 'tor-nyx' instead of 'nyx' in the path for the sample nyxrc if we're
-# building for debian.
-
-isDebInstall = False
-for arg in sys.argv:
- if 'tor-nyx' in arg or 'release_deb' in arg:
- isDebInstall = True
- break
-
-docPath = '/usr/share/doc/%s' % ('tor-nyx' if isDebInstall else 'nyx')
-
-# Allow the docPath to be overridden via a '--docPath' argument. This is to
-# support custom documentation locations on Gentoo, as discussed in:
-# https://bugs.gentoo.org/349792
-
-try:
- docPathFlagIndex = sys.argv.index('--docPath')
- if docPathFlagIndex < len(sys.argv) - 1:
- docPath = sys.argv[docPathFlagIndex + 1]
-
- # remove the custom --docPath argument (otherwise the setup call will
- # complain about them)
- del sys.argv[docPathFlagIndex:docPathFlagIndex + 3]
- else:
- print 'No path provided for --docPath'
- sys.exit(1)
-except ValueError: pass # --docPath flag not found
-
-# Provides the configuration option to install to '/usr/share' rather than as a
-# python module. Alternatives are to either provide this as an input argument
-# (not an option for deb/rpm builds) or add a setup.cfg with:
-# [install]
-# install-purelib=/usr/share
-# which would mean a bit more unnecessary clutter.
-
-manFilename = 'nyx/resoureces/nyx.1'
-if 'install' in sys.argv:
- sys.argv += ['--install-purelib', '/usr/share']
-
- # Compresses the man page. This is a temporary file that we'll install. If
- # something goes wrong then we'll print the issue and use the uncompressed man
- # page instead.
-
- try:
- manInputFile = open('nyx/resources/nyx.1', 'r')
- manContents = manInputFile.read()
- manInputFile.close()
-
- # temporary destination for the man page guarenteed to be unoccupied (to
- # avoid conflicting with files that are already there)
- tmpFilename = tempfile.mktemp('/nyx.1.gz')
-
- # make dir if the path doesn't already exist
- baseDir = os.path.dirname(tmpFilename)
- if not os.path.exists(baseDir): os.makedirs(baseDir)
-
- manOutputFile = gzip.open(tmpFilename, 'wb')
- manOutputFile.write(manContents)
- manOutputFile.close()
-
- # places in tmp rather than a relative path to avoid having this copy appear
- # in the deb and rpm builds
- manFilename = tmpFilename
- except IOError, exc:
- print 'Unable to compress man page: %s' % exc
-
-installPackages = ['nyx', 'nyx.cli', 'nyx.cli.graphing', 'nyx.cli.connections', 'nyx.cli.menu', 'nyx.util', 'nyx.stem']
-
-setup(name='nyx',
- version=VERSION,
- description='Terminal tor status monitor',
- license='GPL v3',
- author='Damian Johnson',
- author_email='atagar(a)torproject.org',
- url='http://www.atagar.com/nyx/',
- packages=installPackages,
- package_dir={'nyx': 'nyx'},
- data_files=[('/usr/bin', ['run_nyx']),
- ('/usr/share/man/man1', [manFilename]),
- (docPath, ['nyxrc.sample']),
- ('/usr/share/nyx/gui', ['nyx/gui/nyx.xml']),
- ('/usr/share/nyx', ['nyx/settings.cfg', 'nyx/uninstall'])] +
- getResources('/usr/share/nyx', 'resources'),
- )
-
-# Cleans up the temporary compressed man page.
-if manFilename != 'nyx/resoureces/nyx.1' and os.path.isfile(manFilename):
- if '-q' not in sys.argv: print 'Removing %s' % manFilename
- os.remove(manFilename)
-
-# Removes the egg_info file. Apparently it is not optional during setup
-# (hardcoded in distutils/command/install.py), nor are there any arguments to
-# bypass its creation. The deb build removes this as part of its rules script.
-eggPath = '/usr/share/nyx-%s.egg-info' % VERSION
-
-if not isDebInstall and os.path.isfile(eggPath):
- if '-q' not in sys.argv: print 'Removing %s' % eggPath
- os.remove(eggPath)
+ % python setup.py install --man-page ''
+
+ ... will cause that resource to be omitted.
+ """
+ user_options = install.user_options + [
+ ('man-page=', None, 'man page location (default: %s)' % DEFAULT_MAN_PAGE_PATH),
+ ('sample-path=', None, 'example nyxrc location (default: %s)' % DEFAULT_SAMPLE_PATH),
+ ]
+
+ def initialize_options(self):
+ install.initialize_options(self)
+ self.man_page = DEFAULT_MAN_PAGE_PATH
+ self.sample_path = DEFAULT_SAMPLE_PATH
+
+ def run(self):
+ install.run(self)
+
+ # Install our bin script. We do this ourselves rather than with the setup()
+ # method's scripts argument because we want to call the script 'nyx' rather
+ # than 'run_nyx'.
+
+ bin_dest = os.path.join(self.install_scripts, 'nyx')
+ mkdir_for(bin_dest)
+ shutil.copyfile('run_nyx', bin_dest)
+ mode = ((os.stat(bin_dest)[stat.ST_MODE]) | 0o555) & 0o7777
+ os.chmod(bin_dest, mode)
+ log.info("installed bin script to '%s'" % bin_dest)
+
+ if self.man_page:
+ install_man_page(os.path.join('nyx', 'resources', 'nyx.1'), self.man_page)
+
+ if self.sample_path:
+ install_sample('nyxrc.sample', self.sample_path)
+
+
+# installation requires us to be in our setup.py's directory
+
+setup_dir = os.path.dirname(os.path.join(os.getcwd(), __file__))
+os.chdir(setup_dir)
+
+setup(
+ name = 'nyx',
+ version = nyx.__version__,
+ description = 'Terminal status monitor for Tor <https://www.torproject.org/>',
+ license = nyx.__license__,
+ author = nyx.__author__,
+ author_email = nyx.__contact__,
+ url = nyx.__url__,
+ packages = ['nyx', 'nyx.connections', 'nyx.menu', 'nyx.util'],
+ keywords = 'tor onion controller',
+ install_requires = ['stem>=1.4.1'],
+ package_data = {'nyx': ['config/*', 'resources/*']},
+ cmdclass = {'install': NyxInstaller},
+)
diff --git a/test/installation.py b/test/installation.py
new file mode 100644
index 0000000..e233d67
--- /dev/null
+++ b/test/installation.py
@@ -0,0 +1,39 @@
+import glob
+import os
+import shutil
+import subprocess
+import sys
+import unittest
+
+import nyx
+import stem.util.system
+
+
+class TestInstallation(unittest.TestCase):
+ def test_installing_stem(self):
+ base_directory = os.path.sep.join(__file__.split(os.path.sep)[:-2])
+
+ if not os.path.exists(os.path.sep.join([base_directory, 'setup.py'])):
+ self.skipTest('(only for git checkout)')
+
+ original_cwd = os.getcwd()
+
+ try:
+ os.chdir(base_directory)
+ stem.util.system.call('python setup.py install --prefix /tmp/nyx_test --man-page /tmp/nyx_test/nyx.1.gz --sample-path /tmp/nyx_test/nyxrc.sample')
+ stem.util.system.call('python setup.py clean --all') # tidy up the build directory
+ site_packages_paths = glob.glob('/tmp/nyx_test/lib*/*/site-packages')
+
+ if len(site_packages_paths) != 1:
+ self.fail('We should only have a single site-packages directory, but instead had: %s' % site_packages_paths)
+
+ self.assertEqual(nyx.__version__, stem.util.system.call(['python', '-c', "import sys;sys.path.insert(0, '%s');import nyx;print(nyx.__version__)" % site_packages_paths[0]])[0])
+
+ process_path = sys.path + ['/tmp/nyx_test/lib/python2.7/site-packages']
+ process = subprocess.Popen(['/tmp/nyx_test/bin/nyx', '--help'], stdout = subprocess.PIPE, env = {'PYTHONPATH': ':'.join(process_path)})
+ stdout = process.communicate()[0]
+
+ self.assertTrue(stdout.startswith('Usage nyx [OPTION]'))
+ finally:
+ shutil.rmtree('/tmp/nyx_test')
+ os.chdir(original_cwd)
1
0
commit 52317483ec963ff628ae35d27778042dbca0591a
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jun 5 10:17:52 2015 +0000
Preparations for 5.0a2
---
Bundle-Data/Docs/ChangeLog.txt | 19 +++++++++++++++++++
gitian/versions.alpha | 14 +++++++-------
tools/update-responses/config.yml | 9 ++++-----
3 files changed, 30 insertions(+), 12 deletions(-)
diff --git a/Bundle-Data/Docs/ChangeLog.txt b/Bundle-Data/Docs/ChangeLog.txt
index 14522bc..df35913 100644
--- a/Bundle-Data/Docs/ChangeLog.txt
+++ b/Bundle-Data/Docs/ChangeLog.txt
@@ -1,3 +1,22 @@
+Tor Browser 5.0a2 -- June 12 2015
+ * All Platforms
+ * Update Tor to 0.2.7.1-alpha
+ * Update HTTPS-Everywhere to 5.0.5
+ * Update NoScript to 2.6.9.26
+ * Update meek to 0.19
+ * Update Torbutton to 1.9.2.7
+ * Bug 15984: Disabling Torbutton breaks the Add-ons Manager
+ * Bug 14429: Make sure the automatic resizing is enabled
+ * Translation updates
+ * Bug 16130: Defend against logjam attack
+ * Bug 15984: Disabling Torbutton breaks the Add-ons Manager
+ * Windows
+ * Bug 16014: Staged update fails if meek is enabled
+ * Bug 16269: repeated add-on compatibility check after update (meek enabled)
+ * Linux
+ * Bug 16026: Fix crash in GStreamer
+ * Bug 16083: Update comment in start-tor-browser
+
Tor Browser 4.5.2 -- June 12 2015
* All Platforms
* Update Tor to 0.2.6.8
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index d2ff1e3..2b2f6cd 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -8,11 +8,11 @@ FIREFOX_VERSION=31.7.0esr
TORBROWSER_UPDATE_CHANNEL=alpha
-TORBROWSER_TAG=tor-browser-${FIREFOX_VERSION}-5.0-1-build1
-TOR_TAG=tor-0.2.6.7
+TORBROWSER_TAG=tor-browser-${FIREFOX_VERSION}-5.0-2-build1
+TOR_TAG=tor-0.2.7.1-alpha
TORLAUNCHER_TAG=0.2.7.5
-TORBUTTON_TAG=1.9.2.5
-HTTPSE_TAG=5.0.3
+TORBUTTON_TAG=1.9.2.7
+HTTPSE_TAG=5.0.5
NSIS_TAG=v0.3
ZLIB_TAG=v1.2.8
LIBEVENT_TAG=release-2.0.21-stable
@@ -25,7 +25,7 @@ FTEPROXY_TAG=597f8378f6f4f3de570b8e1064c2e4cb8d67fbd0 # tag 0.2.19
LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
TXSOCKSX_TAG=216eb0894a1755872f4789f9458aa6cf543b8433 # unsigned habnabit/1.13.0.2
GOPTLIB_TAG=0.2
-MEEK_TAG=0.18
+MEEK_TAG=0.19
FAKETIME_TAG=70aa6b394d9341522dffe8a5a5cf5929e82cc6b9 # unsigned v0.9.6
GOED25519_TAG=c4161f4c7483313562781c61b9a20aba73daf9de
GOSIPHASH_TAG=42ba037e748c9062a75e0924705c43b893edefcd
@@ -57,7 +57,7 @@ GO_VER=1.4.2
## File names for the source packages
OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
GMP_PACKAGE=gmp-${GMP_VER}.tar.bz2
-NOSCRIPT_PACKAGE=noscript_security_suite-2.6.9.22-sm+fn+fx.xpi
+NOSCRIPT_PACKAGE=noscript_security_suite-2.6.9.26-sm+fn+fx.xpi
TOOLCHAIN4_PACKAGE=x86_64-apple-darwin10.tar.xz
TOOLCHAIN4_OLD_PACKAGE=multiarch-darwin11-cctools127.2-gcc42-5666.3-llvmgcc42-2336.1-Linux-120724.tar.xz
OSXSDK_PACKAGE=apple-uni-sdk-10.6_20110407-0.flosoft1_i386.deb
@@ -84,7 +84,7 @@ GMP_HASH=752079520b4690531171d0f4532e40f08600215feefede70b24fabdc6f1ab160
OSXSDK_HASH=6602d8d5ddb371fbc02e2a5967d9bd0cd7358d46f9417753c8234b923f2ea6fc
TOOLCHAIN4_HASH=7b71bfe02820409b994c5c33a7eab81a81c72550f5da85ff7af70da3da244645
TOOLCHAIN4_OLD_HASH=65c1b2d302358a6b95a26c6828a66908a199276193bb0b268f2dcc1a997731e9
-NOSCRIPT_HASH=0c6774cd5479a315253eb403c6a7c074658154630ac9c4bc481aa0aba6eb16a8
+NOSCRIPT_HASH=06d9fa6093378682a7fabfc0b2d156dfafcfda749ddd802970ce14d1860e6a3e
MSVCR100_HASH=1221a09484964a6f38af5e34ee292b9afefccb3dc6e55435fd3aaf7c235d9067
PYCRYPTO_HASH=f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c
ARGPARSE_HASH=ddaf4b0a618335a32b6664d4ae038a1de8fbada3b25033f9021510ed2b3941a4
diff --git a/tools/update-responses/config.yml b/tools/update-responses/config.yml
index 90524bd..fd9bd23 100644
--- a/tools/update-responses/config.yml
+++ b/tools/update-responses/config.yml
@@ -9,7 +9,7 @@ build_targets:
osx32: Darwin_x86-gcc3
osx64: Darwin_x86_64-gcc3
channels:
- alpha: 5.0a1
+ alpha: 5.0a2
release: 4.5.2
versions:
4.5.2:
@@ -23,13 +23,12 @@ versions:
osx32:
minSupportedOSVersion: 10.8
detailsURL: https://blog.torproject.org/blog/end-life-plan-tor-browser-32-bit-macs#upda…
- 5.0a1:
+ 5.0a2:
platformVersion: 31.7.0
detailsURL: https://www.torproject.org/projects/torbrowser.html.en
- download_url: https://www.torproject.org/dist/torbrowser/5.0a1
+ download_url: https://www.torproject.org/dist/torbrowser/5.0a2
incremental_from:
- - 4.5
- - 4.5a5
+ - 5.0a1
migrate_archs:
osx32: osx64
osx32:
1
0
commit 1b7833eaea2adbf100880cd50c6a81b1d47c28e6
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jun 5 09:52:22 2015 +0000
Bump version to 1.9.2.7
---
src/CHANGELOG | 3 +++
src/install.rdf | 2 +-
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/CHANGELOG b/src/CHANGELOG
index a46336a..7abf527 100644
--- a/src/CHANGELOG
+++ b/src/CHANGELOG
@@ -1,3 +1,6 @@
+1.9.2.7
+ * Bug 14429: Make sure the automatic resizing is enabled
+
1.9.2.6
* Bug 15984: Disabling Torbutton breaks the Add-ons Manager
* Bug 14429: Make sure the automatic resizing is disabled
diff --git a/src/install.rdf b/src/install.rdf
index 8379338..ae087f7 100644
--- a/src/install.rdf
+++ b/src/install.rdf
@@ -6,7 +6,7 @@
<em:name>Torbutton</em:name>
<em:creator>Mike Perry</em:creator>
<em:id>torbutton(a)torproject.org</em:id>
- <em:version>1.9.2.6</em:version>
+ <em:version>1.9.2.7</em:version>
<em:homepageURL>https://www.torproject.org/projects/torbrowser.html.en</em:homepageURL>
<em:optionsURL>chrome://torbutton/content/preferences.xul</em:optionsURL>
<em:iconURL>chrome://torbutton/skin/tor.png</em:iconURL>
1
0

[torbutton/master] Revert "Revert "Bug 14429: Enable auto-resizing; disable maximization warning.""
by gk@torproject.org 05 Jun '15
by gk@torproject.org 05 Jun '15
05 Jun '15
commit edeaca158e86d1be1bea5bbb92cc6a3c9f481c23
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jun 5 06:47:31 2015 +0000
Revert "Revert "Bug 14429: Enable auto-resizing; disable maximization warning.""
This reverts commit f35b2f858359289d1c47967d34ca03bd678397c8.
---
src/defaults/preferences/preferences.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/defaults/preferences/preferences.js b/src/defaults/preferences/preferences.js
index 68c4f60..4d1dee0 100644
--- a/src/defaults/preferences/preferences.js
+++ b/src/defaults/preferences/preferences.js
@@ -118,7 +118,7 @@ pref("extensions.torbutton.prompted_language",false);
// TODO: This is just part of a stopgap until #14429 gets properly implemented.
// See #7255 for details. We display the warning three times to make sure the
// user did not click on it by accident.
-pref("extensions.torbutton.maximize_warnings_remaining", 3);
+pref("extensions.torbutton.maximize_warnings_remaining", 0);
pref("extensions.torbutton.startup_resize_period", true);
// Security prefs:
@@ -159,7 +159,7 @@ pref("extensions.torbutton.close_newnym",true);
pref("extensions.torbutton.block_js_history",true);
pref("extensions.torbutton.resize_on_toggle",true);
pref("extensions.torbutton.resize_new_windows",true);
-pref("extensions.torbutton.resize_windows",false);
+pref("extensions.torbutton.resize_windows",true);
pref("extensions.torbutton.banned_ports","9050,9051,9150,9151");
pref("extensions.torbutton.block_tor_file_net",true);
pref("extensions.torbutton.block_nontor_file_net",false);
1
0

[tor/master] Set session_group after the port's data structure has been populated.
by nickm@torproject.org 04 Jun '15
by nickm@torproject.org 04 Jun '15
04 Jun '15
commit f2ff8145820243a05803367d31c8b34e03048706
Author: Yawning Angel <yawning(a)schwanenlied.me>
Date: Thu Jun 4 13:53:35 2015 +0000
Set session_group after the port's data structure has been populated.
Fixes #16247, patch by "jojelino".
---
changes/bug16247 | 5 +++++
src/or/connection.c | 4 ++--
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/changes/bug16247 b/changes/bug16247
new file mode 100644
index 0000000..9464b1c
--- /dev/null
+++ b/changes/bug16247
@@ -0,0 +1,5 @@
+ o Minor bugfixes (client-side privacy):
+ - Properly separate out each SOCKSPort when applying stream isolation.
+ The error occured because each port's session group was being
+ overwritten by a default value. Fixes bug 16247; bugfix on
+ 0.2.6.3-alpha. Patch by "jojelino".
diff --git a/src/or/connection.c b/src/or/connection.c
index 7db0238..721ee20 100644
--- a/src/or/connection.c
+++ b/src/or/connection.c
@@ -1284,6 +1284,8 @@ connection_listener_new(const struct sockaddr *listensockaddr,
conn->port = gotPort;
tor_addr_copy(&conn->addr, &addr);
+ memcpy(&lis_conn->entry_cfg, &port_cfg->entry_cfg, sizeof(entry_port_cfg_t));
+
if (port_cfg->entry_cfg.isolation_flags) {
lis_conn->entry_cfg.isolation_flags = port_cfg->entry_cfg.isolation_flags;
if (port_cfg->entry_cfg.session_group >= 0) {
@@ -1299,8 +1301,6 @@ connection_listener_new(const struct sockaddr *listensockaddr,
}
}
- memcpy(&lis_conn->entry_cfg, &port_cfg->entry_cfg, sizeof(entry_port_cfg_t));
-
if (type != CONN_TYPE_AP_LISTENER) {
lis_conn->entry_cfg.ipv4_traffic = 1;
lis_conn->entry_cfg.ipv6_traffic = 1;
1
0

04 Jun '15
commit 2f67a6e8c95aadadfc55b6245668471f7def72e6
Merge: e48f8e5 f2ff814
Author: Nick Mathewson <nickm(a)torproject.org>
Date: Thu Jun 4 15:02:47 2015 -0400
Merge remote-tracking branch 'origin/maint-0.2.6'
changes/bug16247 | 5 +++++
src/or/connection.c | 4 ++--
2 files changed, 7 insertions(+), 2 deletions(-)
1
0