[tor-commits] [oonib/master] Make oonibackend ready for being uploaded to pypi

art at torproject.org art at torproject.org
Tue Sep 2 10:56:39 UTC 2014


commit dd8c48922c294b74ba6ec6a371e6ffbe7c0f14a1
Author: Arturo Filastò <art at fuffa.org>
Date:   Mon Sep 1 17:34:25 2014 +0200

    Make oonibackend ready for being uploaded to pypi
---
 ChangeLog.rst          |   21 +++++++++++
 MANIFEST.in            |   13 ++++++-
 data/archive/empty.txt |    2 +
 data/decks/README      |    1 +
 data/reports/empty.txt |    2 +
 data/tor/empty.txt     |    2 +
 setup.py               |   96 ++++++++++++++++++++++++++++++++++++++++++++++--
 7 files changed, 132 insertions(+), 5 deletions(-)

diff --git a/ChangeLog.rst b/ChangeLog.rst
new file mode 100644
index 0000000..e655e27
--- /dev/null
+++ b/ChangeLog.rst
@@ -0,0 +1,21 @@
+1.0.2 (Wed, 21 May 2014)
+------------------------
+
+Various code improvements and fixes following the Least Authority release
+engineering work.
+
+1.0.0 (Wed, 26 Mar 2014)
+------------------------
+
+First public release of oonibackend
+
+* Implements collector for receiver reports.
+
+* Implements HTTPReturnJSONHeaders HTTP helper
+
+* Implement DNS resolver helper
+
+* Implements TCP echo helper
+
+* Implements bouncer for directing directing probes to an adequate collector
+  and test helper.
diff --git a/MANIFEST.in b/MANIFEST.in
index 406cfc4..18db7db 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,6 +1,15 @@
+include data/decks/README
+include data/inputs/Makefile
+include data/reports/empty.txt
+include data/archive/empty.txt
+include data/tor/empty.txt
+include data/bouncer.yaml
+include data/policy.yaml
+include oonib.conf.example
 include requirements.txt
 include AUTHORS
 include HACKING
 include LICENSE
-include Manifest.in
-include README.md
+include MANIFEST.in
+include README.rst
+include ChangeLog.rst
diff --git a/data/archive/empty.txt b/data/archive/empty.txt
new file mode 100644
index 0000000..9a166f9
--- /dev/null
+++ b/data/archive/empty.txt
@@ -0,0 +1,2 @@
+In here will end up the archived reports.
+This file may be deleted at any time.
diff --git a/data/decks/README b/data/decks/README
new file mode 100644
index 0000000..619a189
--- /dev/null
+++ b/data/decks/README
@@ -0,0 +1 @@
+In here you shall place the decks to be served to clients.
diff --git a/data/reports/empty.txt b/data/reports/empty.txt
new file mode 100644
index 0000000..7e24f09
--- /dev/null
+++ b/data/reports/empty.txt
@@ -0,0 +1,2 @@
+In here will end up reports in progress.
+This file may be deleted at any time.
diff --git a/data/tor/empty.txt b/data/tor/empty.txt
new file mode 100644
index 0000000..ec3be8f
--- /dev/null
+++ b/data/tor/empty.txt
@@ -0,0 +1,2 @@
+In here will end up all tor related files.
+This file may be deleted at any time.
diff --git a/setup.py b/setup.py
index c9a2dc4..c8d374e 100644
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,11 @@
 from __future__ import with_statement
 
+import os
+import sys
 from oonib import __version__
 from setuptools import setup, find_packages
+from setuptools.command import install
+
 
 def get_requirements():
     with open('requirements.txt', 'r') as f:
@@ -25,16 +29,102 @@ def get_requirements():
 
     return pypi_packages, dependency_links
 
+usr_share_path = '/usr/share'
+var_path = '/var'
+etc_path = '/etc'
+# If this is true then it means we are in a virtualenv
+# therefore we should not place our data files inside /usr/share/ooni, but
+# place them inside the virtual env system prefix.
+if hasattr(sys, 'real_prefix'):
+        usr_share_path = os.path.abspath(os.path.join(sys.prefix, 'share'))
+        var_path = os.path.abspath(os.path.join(sys.prefix, 'var'))
+        etc_path = os.path.abspath(os.path.join(sys.prefix, 'etc'))
+
+data_dir = os.path.join(usr_share_path, 'ooni', 'backend')
+spool_dir = os.path.join(var_path, 'spool', 'ooni', 'backend')
+var_dir = os.path.join(var_path, 'spool', 'ooni', 'backend')
+
+def install_config_file(self):
+    print "Writing the default configuration file to %s" % etc_path
+    if not os.path.isdir(etc_path):
+        os.makedirs(etc_path)
+    import yaml
+    example_config = yaml.safe_load(open('oonib.conf.example'))
+    example_config['main']['report_dir'] = os.path.join(spool_dir, 'reports')
+    example_config['main']['archive_dir'] = os.path.join(spool_dir, 'archive')
+    example_config['main']['deck_dir'] = os.path.join(data_dir, 'decks')
+    example_config['main']['input_dir'] = os.path.join(data_dir, 'inputs')
+    example_config['main']['policy_file'] = os.path.join(var_dir, 'policy.yaml')
+    example_config['main']['bouncer_file'] = os.path.join(var_dir, 'bouncer.yaml')
+    example_config['main']['tor_datadir'] = os.path.join(var_dir, 'tor')
+
+    with open(os.path.join(etc_path, 'oonibackend.conf'), 'w+') as fw:
+        yaml.dump(example_config, fw, default_flow_style=False)
+
+install.install.sub_commands.append(('install_config_file', install_config_file))
+
+data_files = [
+    (data_dir, ['oonib.conf.example']),
+    (os.path.join(data_dir, 'decks'), ['data/decks/README']),
+    (os.path.join(data_dir, 'inputs'), ['data/inputs/Makefile']),
+    (os.path.join(spool_dir, 'reports'), ['data/reports/empty.txt']),
+    (os.path.join(spool_dir, 'archive'), ['data/archive/empty.txt']),
+    (os.path.join(var_dir, 'tor'), ['data/tor/empty.txt']),
+    (var_dir, ['data/bouncer.yaml', 'data/policy.yaml'])
+]
+
+with open('README.rst') as f:
+    readme = f.read()
+
+with open('ChangeLog.rst') as f:
+    changelog = f.read()
+
 install_requires, dependency_links = get_requirements()
 setup(
-    name="oonib",
+    name="oonibackend",
     version=__version__,
     author="The Tor Project, Inc",
     url="https://ooni.torproject.org",
-    license="LICENSE",
-    description="OONI-Probe Backend",
+    license="BSD 2 clause",
+    description="Open Observatory of Network Interference Backend",
+    long_description=readme + '\n\n' + changelog,
     scripts=["bin/oonib", "bin/oonibadmin", "bin/archive_oonib_reports"],
     packages=find_packages(),
+    data_files=data_files,
     install_requires=install_requires,
     dependency_links=dependency_links,
+    classifiers=(
+        "Development Status :: 5 - Production/Stable",
+        "Environment :: Console",
+        "Framework :: Twisted",
+        "Intended Audience :: Developers",
+        "Intended Audience :: Education",
+        "Intended Audience :: End Users/Desktop",
+        "Intended Audience :: Information Technology",
+        "Intended Audience :: Science/Research",
+        "Intended Audience :: Telecommunications Industry",
+        "License :: OSI Approved :: BSD License"
+        "Programming Language :: Python",
+        "Programming Language :: Python :: 2",
+        "Programming Language :: Python :: 2 :: Only",
+        "Programming Language :: Python :: 2.6",
+        "Programming Language :: Python :: 2.7",
+        "Operating System :: MacOS :: MacOS X",
+        "Operating System :: POSIX",
+        "Operating System :: POSIX :: BSD",
+        "Operating System :: POSIX :: BSD :: BSD/OS",
+        "Operating System :: POSIX :: BSD :: FreeBSD",
+        "Operating System :: POSIX :: BSD :: NetBSD",
+        "Operating System :: POSIX :: BSD :: OpenBSD",
+        "Operating System :: POSIX :: Linux",
+        "Operating System :: Unix",
+        "Topic :: Scientific/Engineering :: Information Analysis",
+        "Topic :: Security",
+        "Topic :: Security :: Cryptography",
+        "Topic :: Software Development :: Libraries :: Application Frameworks",
+        "Topic :: Software Development :: Libraries :: Python Modules",
+        "Topic :: Software Development :: Testing",
+        "Topic :: Software Development :: Testing :: Traffic Generation",
+        "Topic :: System :: Networking :: Monitoring",
+    )
 )





More information about the tor-commits mailing list