{ "info": { "author": "Mael Stor", "author_email": "maelstor@posteo.de", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: End Users/Desktop", "Intended Audience :: System Administrators", "Intended Audience :: Telecommunications Industry", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Natural Language :: English", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only", "Topic :: Security", "Topic :: System :: Networking", "Topic :: System :: Networking :: Firewalls", "Topic :: System :: Systems Administration", "Topic :: Utilities" ], "description": "
\n sudo cp -r /lib/python3.7/site-packages/connord/config /etc/connord\n sudoedit /etc/connord/config.yml\n\n\n- (Optional) Customize `config.yml` either in `site-packages` or `/etc/connord` if\n you've taken the optional step above.\n- Depending on your current iptables rules you may need to run \n `$ sudo connord iptables flush`.\n- Get the openvpn configuration files for nordvpn with `$ sudo connord update`.\n Files are installed in `/etc/openvpn/client/nordvpn` per default.\n- Execute `$ sudo connord connect -c YOUR_COUNTRY_CODE` and replace\n YOUR\\_COUNTRY\\_CODE with the\n [ISO_3166-1_alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country\n code of your current country. You will be asked for your username and password\n which are stored under `/etc/openvpn/client/nordvpn/credentials` with mode\n `0600`.\n\n## Installation\n\nFirst make sure you have all system dependencies installed.\n\n#### Ubuntu/Debian\n\n $ sudo apt-get install resolvconf iptables openvpn\n\n#### Arch\n\n $ sudo pacman -Sy openresolv iptables openvpn\n\n#### Installation of CønNørD\n\n $ pip install --upgrade connord\n\nor globally:\n\n $ sudo pip install --upgrade connord\n\nYou may also clone the repo\n\n $ git clone git@github.com:MaelStor/connord.git\n $ cd connord\n\nand install in userspace with\n\n $ pip install --user .\n\nor globally with\n\n $ sudo pip install .\n\n## General section\n\nCønNørD per default doesn't output anything on stdout and behaves like\nany other standard command-line tool. If you experience problems running \nconnord, try the same command in verbose mode\n with\n\n connord -v COMMAND\n\nor\n\n connord --verbose COMMAND\n\nfor debugging purposes. You should see in most cases where the error occurred. \nThere may be still hard to track bugs, please report them to the Issue board on \n[Github](https://github.com/MaelStor/connord/issues).\n\nError messages are written to stderr in your shell. You can suppress error \nmessages with `-q` or `--quiet` if you like to.\n\nVerbose mode of `openvpn` can be set in `config.yml` in the openvpn\nsection or at the command-line when using `connord connect` adding it to the\nopenvpn command with `-o '--verb 3'`.\n\n## Obfuscated servers\n\nIn order to be able to connect to obfuscated servers you need to\n[patch](https://github.com/clayface/openvpn_xorpatch) OpenVPN. For example the\nrepository of [Tunnelblick](https://github.com/Tunnelblick/Tunnelblick) includes\nthe patches in third_party/sources/openvpn. How this can be done is described\n[here](https://www.reddit.com/r/nordvpn/comments/bsbxt6/how_to_make_nordvpn_obfuscated_servers_work_on/).\nI haven't patched my openvpn client, so I can't share experiences but above\nsolution is reported to work. Please don't post any issues around this topic on \nthe issue board of CønNørD.\n\nYou can list obfuscated servers with `$ connord list servers -t obfuscated`.\nSame scheme to finally connect to an obfuscated server for example located in\nHongKong: `$ sudo connord connect -c hk -t obfuscated`.\n\nYou will be warned by connord if you try to connect to an obfuscated server, to\nprevent accidential connection, what fails if you haven't patched the openvpn\nclient. For example:\n\n
\n$ connord connect -c hk -t obfuscated\nWARNING: hk67.nordvpn.com is an obfuscated server.\nThis may fail if not configured properly.\nAre you sure you want to continue? (y/N): y\nOptions error: Unrecognized option or missing or extra parameter(s) in /tmp/ovpn.conf:24: scramble (2.4.7)\nUse --help for more information.\nconnord: Running openvpn failed: Openvpn process stopped unexpected.\n\n\n## Configuration\n\nDefault configuration files are located in your python\n`site-packages/connord/config` folder. You may wish to create an more permanent\nlocation and copy them to `/etc/connord/`. The folder needs to be created if not\nalready done. Configuration files in site-packages don't survive an upgrade in\ncontrast to `/etc/connord`. If the `/etc/connord` folder exists no configuration\nfiles in `site-packages` are read.\n\nTo see which configuration folder is active run `connord --verbose version`.\n\n#### config.yml\n\nThe main configuration file in [YAML](https://yaml.org/) format. Every variable\nset here is exposed to .rules and .fallback templates.\n\n###### iptables\n\nSo you may set something like this\n\n
\niptables\n dns:\n # NordVPN\n - '103.86.99.100/32'\n - '103.86.96.100/32'\n\n\nand use it for example in 01-filter.rules:\n\n
\nOUTPUT:\n policy: ACCEPT\n action: None\n rules:\n{% for server in iptables.dns %}\n - dst: \"{{ server }}\"\n protocol: udp\n udp:\n dport: '53'\n target: ACCEPT\n{% endfor %}\n\n\nwhat creates the following after rendering:\n\n\nOUTPUT:\n policy: ACCEPT\n action: None\n rules:\n - dst: '103.86.99.100/32'\n protocol: udp\n udp:\n dport: '53'\n target: ACCEPT\n - dst: '103.86.96.100/32'\n protocol: udp\n udp:\n dport: '53'\n target: ACCEPT\n\n\nLike it? See more examples in the rules and fallback files section.\n\n###### openvpn\n\nThese are the default settings to start OpenVPN:\n\n
\nopenvpn:\n daemon: False\n auth-user-pass: \"built-in\"\n auth-nocache: False\n auth-retry: \"nointeract\"\n down-pre: True\n redirect-gateway: True\n script-security: 2\n # This section is special to connord and can't be found in the openvpn manual\n scripts:\n - name: \"up\"\n path: \"built-in\"\n stage: \"up\"\n creates: \"up.env\"\n - name: \"down\"\n path: \"built-in\"\n stage: \"down\"\n creates: \"down.env\"\n - name: \"ipchange\"\n path: \"built-in\"\n stage: \"always\"\n creates: \"ipchange.env\"\n\n\nFor an overview of all possible options see `$ man openvpn`. You just need to\nstrip off the leading '--' and place it somewhere in the openvpn section.\nArguments are written after `:` or if the option doesn't take any\narguments place `True` after `:`. Most common mistake is to ignore\nindentation. But since this is a yaml file indentation IS important. Further\nreading about [YAML Syntax](https://yaml.org/spec/1.1/spec.html). There's\nthe special keyword `built-in` around what can be applied to:\n\n- auth-user-pass\n- scripts paths\n - name: up\n - name: down\n - name: ipchange\n\nif you like to use the built-in paths, what is the default behaviour. If you\ndon't like to run a script say when openvpn goes down delete or comment out\n\n
\n - name: \"down\"\n path: \"built-in\"\n stage: \"down\"\n creates: \"down.env\"\n\n\n## Iptables\n\n#### rules and fallback files\n\nThese files are [jinja2](http://jinja.pocoo.org/docs/2.10/) templates which are\nrendered with the `config.yml` file and .env files created by the built-in `up`,\n`down` and `ipchange` scripts when openvpn starts running.\n\n###### Naming scheme\n\nThe naming scheme is important. Let's take for example the rules file\nwhich shall be applied to netfilters `filter` table. `01-filter.rules`.\nThe leading number isn't necessary but you can control the order when to apply\nthe files that way. After the dash `-` follows the table name. The dash isn't\nneeded when there is no leading number.\nThe suffix `.rules` causes the rules to be applied after successfully\nestablishing a connection to a server. The suffix `.fallback` causes the rules to be applied when disconnecting from a server or\nafter invokation of `connord iptables flush`. If you're writing ipv6 rules for\nthe `filter` table place them in a file like `01-filter6.rules` or\n`01-filter6.fallback`. Files with a `6` suffix are applied to ip6tables.\n\n#### Variables\n\nEvery variable you define or is already defined in `config.yml` is available in\nrules and fallback files. In addition to that the connord instance exposes the\nfollowing variables to `.rules` and `.fallback` files:\n\n
\nvpn_remote # the remote server ip address\nvpn_protocol # the protocol in use: udp or tcp\nvpn_port # may be 1194 (udp) or 443 (tcp)\n\ngateway:\n ip_address # the ip_address of the default gateway \n interface # the interface of the default gateway\n\nlan: # derived from the default gateway's interface\n inet: # short for AF_INET\n - addr: # the ip address of your LAN\n netmask: # the netmask for your LAN\n broadcast: # the broadcast address of your ipv4 LAN\n inet6: # actually derived from AF_INET6\n - addr: # (mostly one of) the ipv6 addressess\n netmask: # the netmask for you LAN\n link: # short for AF_LINK\n - addr: # the MAC address of your LAN card\n broadcast: # the broadcast address. Should be in most cases\n ff:ff:ff:ff:ff:ff\n\n\nIn `fallback` files `vpn_remote` is `0.0.0.0/0`, `vpn_protocol` is `udp` and\n`vpn_port` is set to `1194`. Be aware that there can be more than one `inet` or\n`inet6` addresses.\n\nVariables exposed from OpenVPN scripts can be seen when starting connord\nnot in daemon mode. The list given here may be incomplete or too exhaustive for\nyour network and is therfor just an incomplete overview. Look at the output of \nconnord for your environment.\n\n
\nconnord 'ipchange' enviroment variables: '/var/run/connord/ipchange.env'\nipchange_args:\n - '[AF_INET]100.100.100.100 1194'\n - '/var/run/connord/ipchange.env'\nip_address: '100.100.100.100'\nport_number: '1194'\ntrusted_ip: '100.100.100.100'\ntrusted_port: '1194'\nuntrusted_ip: '100.100.100.100'\nuntrusted_port: '1194'\n\n\n
\nconnord 'up' enviroment variables: '/var/run/connord/up.env'\nup_args:\n - 'init'\n - '255.255.255.0'\n - '10.8.1.10'\n - '1590'\n - '1500'\n - 'tun1'\n - '/var/run/connord/up.env'\ndhcp_option:\n dns:\n - '103.86.99.100'\n - '103.86.96.100'\ndev: 'tun1'\nifconfig_broadcast: '10.8.1.255'\nifconfig_local: '10.8.1.10'\nifconfig_netmask: '255.255.255.0'\nlink_mtu: '1590'\nroute_net_gateway: '200.200.200.200'\nroute_vpn_gateway: '10.8.1.1'\nscript_context: 'init'\ntun_mtu: '1500'\ntrusted_ip: '100.100.100.100'\ntrusted_port: '1194'\nuntrusted_ip: '100.100.100.100'\nuntrusted_port: '1194'\n\n\n
\nconnord 'down' enviroment variables: '/var/run/connord/down.env'\ndown_args:\n - 'init'\n - '255.255.255.0'\n - '10.8.1.10'\n - '1590'\n - '1500'\n - 'tun1'\n - '/var/run/connord/down.env'\ndhcp_option:\n dns:\n - '103.86.99.100'\n - '103.86.96.100'\ndev: 'tun1'\nifconfig_broadcast: '10.8.1.255'\nifconfig_local: '10.8.1.10'\nifconfig_netmask: '255.255.255.0'\nlink_mtu: '1590'\nroute_net_gateway: '200.200.200.200'\nroute_vpn_gateway: '10.8.1.1'\nscript_context: 'init'\ntun_mtu: '1500'\ntrusted_ip: '100.100.100.100'\ntrusted_port: '1194'\nuntrusted_ip: '100.100.100.100'\nuntrusted_port: '1194'\nredirect_gateway: '1'\n\n\nVariables from OpenVPN scripts are only available in `.rules` files!\n\n## Overview over the most important command-line options\n\nCommand-line options overwrite the configuration in `config.yml`\n\n#### Main options\n\n
\nusage: connord [-h] [-q | -v] {update,list,connect,kill,iptables,version} ...\n\nC\u00f8nN\u00f8rD connects you to NordVPN servers with OpenVPN (https://openvpn.net) and\nyou can choose between a high amount of possible filters, to make it easy for\nyou to connect to servers with the best performance and features the server\noffers to you. It's taken care that your DNS isn't leaked.\n\npositional arguments:\n {update,list,connect,kill,iptables,version}\n update Update nordvpn configuration files and the location\n database.\n list List features, types, ... and servers.\n connect Connect to a server.\n kill Kill the openvpn process.\n iptables Manage iptables.\n version Show version\n\noptional arguments:\n -h, --help show this help message and exit\n -q, --quiet Suppress error messages.\n -v, --verbose Show what's going.\n\nRun a command with -h or --help for more information.\n\n\n#### Listings\n\n\nusage: connord list [-h] {iptables,countries,areas,features,types,servers} ...\n\nThe 'list' command allows some powerful filtering so you can select a server\ntailored to your demands. 'types', 'features', 'areas', 'countries' give you\nan overview output of possible arguments to the respective flag.\n\npositional arguments:\n {iptables,countries,areas,features,types,servers}\n iptables List rules in netfilter tables. With no arguments list\n ipv4 'filter' table.\n countries List all countries with NordVPN servers.\n areas List all areas/cities with NordVPN servers.\n features List all possible features of NordVPN servers.\n types List all possible types/categories of NordVPN servers.\n servers List servers filtered by specified arguments.\n\noptional arguments:\n -h, --help show this help message and exit\n\nRun a command with -h or --help for more information.\n\n\n###### servers\n\n\nusage: connord list servers [-h] [-c COUNTRY] [-a AREA] [-f FEATURE] [-t TYPE]\n [--netflix]\n [--max-load MAX_LOAD | --min-load MIN_LOAD | --load LOAD]\n [--top TOP]\n\nList servers filtered by one or more of the specified arguments. If no\narguments are given list all NordVPN servers. To see possible values for\n--area, --country, --feature and --type have a look at the respective 'list'\ncommands.\n\noptional arguments:\n -h, --help show this help message and exit\n -c COUNTRY, --country COUNTRY\n Select a specific country. May be specified multiple\n times.\n -a AREA, --area AREA Select a specific area. May be specified multiple\n times.\n -f FEATURE, --feature FEATURE\n Select servers with a specific list of features. May\n be specified multiple times.\n -t TYPE, --type TYPE Select servers with a specific type. May be specified\n multiple times.\n --netflix Select servers configured for netflix.\n --max-load MAX_LOAD Filter servers by maximum load.\n --min-load MIN_LOAD Filter servers by minimum load.\n --load LOAD Filter servers by exact load match.\n --top TOP Show TOP count resulting servers.\n\n\n#### Update NordVPN server configuration files and the location database\n\n
\nusage: connord update [-h] [-f]\n\noptional arguments:\n -h, --help show this help message and exit\n -f, --force Force update no matter of configuration.\n\n\n#### Connect to NordVPN servers\n\n
\nusage: connord connect [-h] [-s SERVER | -b] [-c COUNTRY] [-a AREA]\n [-f FEATURE] [-t TYPE] [--netflix]\n [--max-load MAX_LOAD | --min-load MIN_LOAD | --load LOAD]\n [-d] [-o OPENVPN_OPTIONS] [--udp | --tcp]\n\nConnect to NordVPN servers. You may specify a single server of your choice\nwith -s SERVER, where SERVER is a COUNTRY_CODE followed by a number. This must\nbe a SERVER for which a configuration file exists. The same filters --area,\n--country ... like in the 'list' command can be applied here. For a list of\npossible values see the respective command in the 'list' command. \n\noptional arguments:\n -h, --help show this help message and exit\n -s SERVER, --server SERVER\n Connect to a specific server. Only -d, -o, --udp and\n --tcp have an effect.\n -b, --best Use best server depending on server load. When\n multiple servers got the same load use the one with\n the best ping. This is the default behaviour if not\n specified on the command-line\n -c COUNTRY, --country COUNTRY\n Select a specific country. May be specified multiple\n times.\n -a AREA, --area AREA Select a specific area. May be specified multiple\n times.\n -f FEATURE, --feature FEATURE\n Select servers with a specific feature. May be\n specified multiple times.\n -t TYPE, --type TYPE Select servers with a specific type. May be specified\n multiple times.\n --netflix Select servers configured for netflix.\n --max-load MAX_LOAD Filter servers by maximum load.\n --min-load MIN_LOAD Filter servers by minimum load.\n --load LOAD Filter servers by exact load match.\n -d, --daemon Start in daemon mode.\n -o OPENVPN_OPTIONS, --openvpn OPENVPN_OPTIONS\n Options to pass through to openvpn as single string\n --udp Use UDP protocol. This is the default\n --tcp Use TCP protocol. Only one of --udp or --tcp may be\n present.\n\n\n#### Manage IPTables\n\n
\nusage: connord iptables [-h] {list,reload,flush,apply} ...\n\nManage your iptables configuration with this command. Under normal\ncirumstances your rules files are automatically applied when running\n'connect'. If somethings going wrong or you are modifying rules you can try\none of the commands defined here. You can list your current iptables rules\nwith the 'list' command as an alternative to the native iptables -L -vn\n--line-num.\n\npositional arguments:\n {list,reload,flush,apply}\n reload Reload iptables configuration.\n flush Flush iptables.\n apply Apply iptables rules per 'table'.\n\noptional arguments:\n -h, --help show this help message and exit\n\nRun a command with -h or --help for more information.\n\n\n## Supported FEATUREs:\n\n\nikev2 IKEv2/IPSec Protocol\nopenvpn_udp UDP\nopenvpn_tcp TCP\nsocks Socks 5\nproxy HTTP Proxy\npptp PPTP\nl2tp L2TP/IPSec\nopenvpn_xor_udp OpenVPN UDP Obfuscated\nopenvpn_xor_tcp OpenVPN TCP Obfuscated\nproxy_cybersec HTTP Proxy CyberSec\nproxy_ssl HTTP Proxy (SSL)\nproxy_ssl_cybersec HTTP CyberSec Proxy (SSL)\nikev2_v6 IKEv2/IPSec IPv6\nopenvpn_udp_v6 UDPv6\nopenvpn_tcp_v6 TCPv6\nwireguard_udp WireGuard UDP\nopenvpn_udp_tls_crypt UDP TLS encryption\nopenvpn_tcp_tls_crypt TCP TLS encryption\n\n\n## Supported TYPEs:\n\n
\ndouble Double VPN\ndedicated Dedicated IP\nstandard Standard VPN servers\np2p P2P\nonion Onion Over VPN\n\n\n\n## Developing\n\nClone the repo and install the development environment:\n\n $ git clone git@github.com:MaelStor/connord.git\n $ cd connord\n $ make venv\n $ . .venv/bin/activate\n\nYou should be good to go from here. If you already have a virtualenv for connord\nthen executing `make develop` is sufficient.\n\n\n", "description_content_type": "text/markdown; charset=UTF-8; variant=GFM", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/MaelStor/connord", "keywords": "linux network system firewall utility tool console shell terminal nordvpn vpn security privacy openvpn iptables dynamic fast", "license": "GPL-3.0-or-later", "maintainer": "", "maintainer_email": "", "name": "connord", "package_url": "https://pypi.org/project/connord/", "platform": "", "project_url": "https://pypi.org/project/connord/", "project_urls": { "Homepage": "https://github.com/MaelStor/connord" }, "release_url": "https://pypi.org/project/connord/0.1.5/", "requires_dist": [ "requests (<3.0.0,>=2.22.0)", "cachetools (<4.0.0,>=3.1.1)", "Jinja2 (<3.0.0,>=2.10.1)", "netaddr (<1.0.0,>=0.7.19)", "PyYAML (<6.0,>=5.1)", "python-iptables (<1.0.0,>=0.14.0)", "progress (<2.0,>=1.5)", "netifaces (<1.0.0,>=0.10.9)" ], "requires_python": ">=3.6", "summary": "Connect to NordVPN servers secure with Iptables and fast with OpenVPN", "version": "0.1.5" }, "last_serial": 5949828, "releases": { "0.1.0a1": [ { "comment_text": "", "digests": { "md5": "273d5898f4d200429a7c587166aa1b74", "sha256": "d8febd4c50d18dc7e85a006b28a5fa68d4c6ff13e7960776f5a94824af7a591f" }, "downloads": -1, "filename": "connord-0.1.0a1-py3-none-any.whl", "has_sig": false, "md5_digest": "273d5898f4d200429a7c587166aa1b74", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 50264, "upload_time": "2019-06-06T23:03:34", "url": "https://files.pythonhosted.org/packages/3e/cd/6a6d3bb80863e1a37dd8567c88a9ccbcd970c711e60ca36f3e59022b9683/connord-0.1.0a1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b4d347e57c331506e3d4e071e1aef3d8", "sha256": "80e8568f8d8d2835fdfed612aad07669966fada897dbe4be8ee820f03fa32783" }, "downloads": -1, "filename": "connord-0.1.0a1.tar.gz", "has_sig": false, "md5_digest": "b4d347e57c331506e3d4e071e1aef3d8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 38558, "upload_time": "2019-06-06T23:03:36", "url": "https://files.pythonhosted.org/packages/ea/24/68bf1ad0823bee16febb6b6705abaad6b0736526538be78fa12da694bcb0/connord-0.1.0a1.tar.gz" } ], "0.1.0a2": [ { "comment_text": "", "digests": { "md5": "2aea42553e1955b6357a5a76afaa006c", "sha256": "48fede6912271433e774253ddc5d470c5e5520c0d2210d471c5c7b3dafbd10a4" }, "downloads": -1, "filename": "connord-0.1.0a2-py3-none-any.whl", "has_sig": false, "md5_digest": "2aea42553e1955b6357a5a76afaa006c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 52038, "upload_time": "2019-06-07T01:21:44", "url": "https://files.pythonhosted.org/packages/5b/d7/cf9751bc7b697c6b04b9bf4e18a5b48424e11b1b34db1750553011f71753/connord-0.1.0a2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7b3c3c906e0a007f16b258366ccb26af", "sha256": "e4481824ea26f26969a40f5e3cfbad571a9ca75c3be9db6eee7918e2c6de0712" }, "downloads": -1, "filename": "connord-0.1.0a2.tar.gz", "has_sig": false, "md5_digest": "7b3c3c906e0a007f16b258366ccb26af", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 42496, "upload_time": "2019-06-07T01:21:46", "url": "https://files.pythonhosted.org/packages/11/4b/4933589d55fe1d663197cb24bc3346e3fcba6e72ec5d152788a0c869779f/connord-0.1.0a2.tar.gz" } ], "0.1.0a3": [ { "comment_text": "", "digests": { "md5": "5ec70e30a2889cd3444488d0917abb8a", "sha256": "d8468b010ddfbf8a02f5e4b054eda059f60a616b39ea4f79a5908ee8144c1e5c" }, "downloads": -1, "filename": "connord-0.1.0a3-py3-none-any.whl", "has_sig": false, "md5_digest": "5ec70e30a2889cd3444488d0917abb8a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 52083, "upload_time": "2019-06-08T07:39:30", "url": "https://files.pythonhosted.org/packages/eb/79/e04d01401d98e1f0778f3f7a527b8d49e8ba0ab9c6dfa1543af2adbc3e4e/connord-0.1.0a3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8af8d3502605921af7152182122cb7f5", "sha256": "753ddaac4c70ec8e185cc194ff05b69a5a97a43e788a605ff6a0b8c2c57b0251" }, "downloads": -1, "filename": "connord-0.1.0a3.tar.gz", "has_sig": false, "md5_digest": "8af8d3502605921af7152182122cb7f5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 42565, "upload_time": "2019-06-08T07:39:32", "url": "https://files.pythonhosted.org/packages/c6/8e/03650022fb36deebb2d667a6a6a15edd70e4b78c4013804d727202f35994/connord-0.1.0a3.tar.gz" } ], "0.1.0a4": [ { "comment_text": "", "digests": { "md5": "f739761adce9fa4f6b7d60f01fe6a482", "sha256": "30942c9ab63bc9455c31fc107ed928b37049929136ce6975d3a9670bfe93cc3d" }, "downloads": -1, "filename": "connord-0.1.0a4-py3-none-any.whl", "has_sig": false, "md5_digest": "f739761adce9fa4f6b7d60f01fe6a482", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 52683, "upload_time": "2019-06-08T20:58:02", "url": "https://files.pythonhosted.org/packages/1f/c9/e86e1802d6a78fe38afbeb8b82f62208790d36405e94ace99345dd2387c7/connord-0.1.0a4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8ffbda03bd127cb6a08fa2accba29c93", "sha256": "61872e2076eb17c4db704acbaf63ba3ff9e6cea08c252e39211891d41a957e8f" }, "downloads": -1, "filename": "connord-0.1.0a4.tar.gz", "has_sig": false, "md5_digest": "8ffbda03bd127cb6a08fa2accba29c93", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 43130, "upload_time": "2019-06-08T20:58:04", "url": "https://files.pythonhosted.org/packages/03/e3/5fdfa177021c983574660ab9bdb3431c6264e78d417dcfb83f356931917e/connord-0.1.0a4.tar.gz" } ], "0.1.0b0": [ { "comment_text": "", "digests": { "md5": "c19ad979fde66b1f1c14595b2c3679bb", "sha256": "577a54d88abefffbc2c43eb6553218326658ca98975021eed0c0851c7e815b22" }, "downloads": -1, "filename": "connord-0.1.0b0-py3-none-any.whl", "has_sig": false, "md5_digest": "c19ad979fde66b1f1c14595b2c3679bb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 56096, "upload_time": "2019-06-09T23:14:36", "url": "https://files.pythonhosted.org/packages/a0/fd/0c8149e99cd35b9d62cbd0dac964ba540a4bf1f26884b5e639861819e4c0/connord-0.1.0b0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a13798b2e49fb9443ec53f6553d30af1", "sha256": "fa94512254d49e9461abae24c9eb99df1594a29c69368574797cd34947a8294c" }, "downloads": -1, "filename": "connord-0.1.0b0.tar.gz", "has_sig": false, "md5_digest": "a13798b2e49fb9443ec53f6553d30af1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 44582, "upload_time": "2019-06-09T23:14:38", "url": "https://files.pythonhosted.org/packages/0f/2c/46a4b0a83ed788003945cdb6012961c1fdcf64bfc1c97811734f6f7eed10/connord-0.1.0b0.tar.gz" } ], "0.1.0b1": [ { "comment_text": "", "digests": { "md5": "a09043cb7e6ae915ad627244f59976df", "sha256": "22911ba1f68b6899b935114523066b521d3343cc4e6514322d40dfd3aceef3d0" }, "downloads": -1, "filename": "connord-0.1.0b1-py3-none-any.whl", "has_sig": false, "md5_digest": "a09043cb7e6ae915ad627244f59976df", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 68052, "upload_time": "2019-06-12T00:01:33", "url": "https://files.pythonhosted.org/packages/fd/e7/baaf56298e23f5430897bcf317aaa550cb311e557980908759ce4aeace0c/connord-0.1.0b1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "16b65fe35b97592ad6bcd62d26d782a9", "sha256": "30e733c404bcc8967adad11dfcc1b5894cc05bbe3c252b34e30633bec711fa71" }, "downloads": -1, "filename": "connord-0.1.0b1.tar.gz", "has_sig": false, "md5_digest": "16b65fe35b97592ad6bcd62d26d782a9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 55801, "upload_time": "2019-06-12T00:01:35", "url": "https://files.pythonhosted.org/packages/42/54/8564d1eaaca9d9b367617ca8bacb9898feb66bde5bded4be526d01beb722/connord-0.1.0b1.tar.gz" } ], "0.1.0b2": [ { "comment_text": "", "digests": { "md5": "471564a41836759c0a6eb8ab81379adc", "sha256": "e9c4e3689128d602c2ece7a5529125d19a056ff49d4161b31d6a102be666ea3b" }, "downloads": -1, "filename": "connord-0.1.0b2-py3-none-any.whl", "has_sig": false, "md5_digest": "471564a41836759c0a6eb8ab81379adc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 74951, "upload_time": "2019-06-15T19:29:37", "url": "https://files.pythonhosted.org/packages/f0/66/775388cda21991939aa291e913a6d3f320a025702a4be9087e39e907e396/connord-0.1.0b2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1c6d24a865c6e4d419eda201120a5cfb", "sha256": "e1ce2b50cdbe32de4c90ffff76cf72310fcff43ce7531d93abcaa77e995e9510" }, "downloads": -1, "filename": "connord-0.1.0b2.tar.gz", "has_sig": false, "md5_digest": "1c6d24a865c6e4d419eda201120a5cfb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 60816, "upload_time": "2019-06-15T19:29:39", "url": "https://files.pythonhosted.org/packages/db/0b/19beb0c2144a1aa73ee5a28d71ff3e4bfd967f034a3f007953e1cae4168b/connord-0.1.0b2.tar.gz" } ], "0.1.0b3": [ { "comment_text": "", "digests": { "md5": "e838713a9d4b014bc3102e4f7e3de607", "sha256": "e508590f371f3f63465fd9e53b513a7584cac443909dd3d4aef7eb3e7e82bb1d" }, "downloads": -1, "filename": "connord-0.1.0b3-py3-none-any.whl", "has_sig": false, "md5_digest": "e838713a9d4b014bc3102e4f7e3de607", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 74932, "upload_time": "2019-06-15T19:52:44", "url": "https://files.pythonhosted.org/packages/e2/60/c8a037ea2c311c33dfd3e631346778ed39dc05cbaf3dcdf9c6d5dd84c055/connord-0.1.0b3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a2754c888ace2b21eb51f0dd95f9e11c", "sha256": "d119a14a4c3bf44b6084326ef809b475cf817f4fe4c7170da6d7cfb9ee7bd944" }, "downloads": -1, "filename": "connord-0.1.0b3.tar.gz", "has_sig": false, "md5_digest": "a2754c888ace2b21eb51f0dd95f9e11c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 60788, "upload_time": "2019-06-15T19:52:46", "url": "https://files.pythonhosted.org/packages/f8/37/6ca7bdc6b264bbd276a80bd236113ffe729e88f5aa742725f8ac7b0d9579/connord-0.1.0b3.tar.gz" } ], "0.1.0b4": [ { "comment_text": "", "digests": { "md5": "d7c1befe8f2e3a7bae07920146edce7e", "sha256": "3eb3fc597babeb59e889a25555195ca8924478084523a5fc80737774e984eb2f" }, "downloads": -1, "filename": "connord-0.1.0b4-py3-none-any.whl", "has_sig": false, "md5_digest": "d7c1befe8f2e3a7bae07920146edce7e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 75244, "upload_time": "2019-06-15T23:55:31", "url": "https://files.pythonhosted.org/packages/e6/5e/76e4fce69c0401733187d78ef1c3a25889ef83cf13084951131ba4d19613/connord-0.1.0b4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "30009a0af91c4d57dc30fe28acccbe9b", "sha256": "a8685b3ee196d51c87ea0cbaf1eaaf171961b26bb2be9deab907567a8c5d6dba" }, "downloads": -1, "filename": "connord-0.1.0b4.tar.gz", "has_sig": false, "md5_digest": "30009a0af91c4d57dc30fe28acccbe9b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 61116, "upload_time": "2019-06-15T23:55:33", "url": "https://files.pythonhosted.org/packages/6d/ba/edff2b155df146646e44dbe0e1a7fed66862e1d1c424882c2e7041cab00a/connord-0.1.0b4.tar.gz" } ], "0.1.0b5": [ { "comment_text": "", "digests": { "md5": "d07a4a0a4e78f27133b35623a5d538c7", "sha256": "55f328be8db370214f1441c7068978c42e0ff26b1b6080f16c384b9c107fce77" }, "downloads": -1, "filename": "connord-0.1.0b5-py3-none-any.whl", "has_sig": false, "md5_digest": "d07a4a0a4e78f27133b35623a5d538c7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 75286, "upload_time": "2019-06-16T14:28:07", "url": "https://files.pythonhosted.org/packages/3b/8e/45f5c4ae14d70e810579805318bc3b2344eeee4f7911d9eea73b280f0a37/connord-0.1.0b5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f42c20d8afb5e75bc9ad7132f6668141", "sha256": "edd7f1e9e3dd085278390ef99ff7c6946103f563c4022f232276748b7084c1b7" }, "downloads": -1, "filename": "connord-0.1.0b5.tar.gz", "has_sig": false, "md5_digest": "f42c20d8afb5e75bc9ad7132f6668141", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 61164, "upload_time": "2019-06-16T14:28:09", "url": "https://files.pythonhosted.org/packages/c9/37/24037209fd42edcb34283a326cbac44eb4365bd3100507600171e52d4ced/connord-0.1.0b5.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "9642c5310280465a9f1af2da3cc13772", "sha256": "455bb3f397684562de842c6647b7fbd9d438bc9a41d36eedd7e30ff56a767620" }, "downloads": -1, "filename": "connord-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "9642c5310280465a9f1af2da3cc13772", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 84893, "upload_time": "2019-06-26T02:31:45", "url": "https://files.pythonhosted.org/packages/1b/16/13603694614198d4d5094c95340af55f81be4af3f2e8820685cca075fcb8/connord-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "af5fe89b5cf7f33802a98c2d8c8f99c0", "sha256": "9d7db594810827d0888e3aa693c368f0e76668c787207225c3564ae3c3406f96" }, "downloads": -1, "filename": "connord-0.1.1.tar.gz", "has_sig": false, "md5_digest": "af5fe89b5cf7f33802a98c2d8c8f99c0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 72067, "upload_time": "2019-06-26T02:31:47", "url": "https://files.pythonhosted.org/packages/0c/7a/a72070ffc49be64cff5155f84aa81425855b8e6f7638d44033668450f283/connord-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "09df5134fa558d8678a71cc52041079d", "sha256": "717bd11f18381c4644b05a753306dc2fe6c025ed4add019e38e9959988a84e0c" }, "downloads": -1, "filename": "connord-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "09df5134fa558d8678a71cc52041079d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 85498, "upload_time": "2019-06-26T17:32:24", "url": "https://files.pythonhosted.org/packages/d9/3c/50dc866757ea861feb4a49819f11fdafcfd7f42c810056b9b7c311b68218/connord-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "774067631b4e3b53a93a19268304831e", "sha256": "2b2d48d60b0ac13880bc9160efadfcacbbe233243cc49adde6e5f19e8838ce27" }, "downloads": -1, "filename": "connord-0.1.2.tar.gz", "has_sig": false, "md5_digest": "774067631b4e3b53a93a19268304831e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 72463, "upload_time": "2019-06-26T17:32:26", "url": "https://files.pythonhosted.org/packages/4b/93/24e383b59bf08cf61a0bf3aca41d1401e9096d707184dc50e0084c120a22/connord-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "96af54df7cbd2ae4bb717cb7aaae75d8", "sha256": "11ccc20d6e27e42a696c1c722dc0757aaf4d66e5fc0d469a4853087a4156e2ea" }, "downloads": -1, "filename": "connord-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "96af54df7cbd2ae4bb717cb7aaae75d8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 90465, "upload_time": "2019-06-28T00:20:11", "url": "https://files.pythonhosted.org/packages/bc/a8/ba4329ba5bd54359aadc75918efafe75eaf374177794ccb9c4a8a75e0f54/connord-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6d457229e4b05fee3eebc0749a556bac", "sha256": "ba3f65a904d29acc3dfda34a49c5f8d673bde2a2c753544428f17e885f764382" }, "downloads": -1, "filename": "connord-0.1.3.tar.gz", "has_sig": false, "md5_digest": "6d457229e4b05fee3eebc0749a556bac", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 77690, "upload_time": "2019-06-28T00:20:13", "url": "https://files.pythonhosted.org/packages/0c/bb/a3d81d342526ab08e733631df471ea6cfd319bda672431967666df942e90/connord-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "de80721a918fcf749ad9a3783be20d67", "sha256": "ea5952809f2ee54d946312125ff7637df00bf27db56574c50cf0a8f3e8cd67c0" }, "downloads": -1, "filename": "connord-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "de80721a918fcf749ad9a3783be20d67", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 91611, "upload_time": "2019-09-24T01:48:23", "url": "https://files.pythonhosted.org/packages/fe/36/d16a1c14c0633265d627fe7eab92cc89aaf559891ec40e600ac11fff693c/connord-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "761fad8bcf685d08c1e23f264915895d", "sha256": "d1f875e0407ce3d3a0b0d86355c96c5a31de672a92244fd7f2f13a451c44716f" }, "downloads": -1, "filename": "connord-0.1.4.tar.gz", "has_sig": false, "md5_digest": "761fad8bcf685d08c1e23f264915895d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 79443, "upload_time": "2019-09-24T01:48:25", "url": "https://files.pythonhosted.org/packages/91/67/faf3d1373b949bbaa5b7b3b5d1469565336131fe0172ed4ff2adeba5ac21/connord-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "2a39e17f69bf3611bc2e93353b99502a", "sha256": "a4764ca078908d294e5f05c79c8634276b6478009c6c7634c355dc9a3ba2d8b6" }, "downloads": -1, "filename": "connord-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "2a39e17f69bf3611bc2e93353b99502a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 114991, "upload_time": "2019-10-09T13:31:54", "url": "https://files.pythonhosted.org/packages/5c/b9/a9ea77d02c604bd09d58f6bacbedebd697c2f1a52b90c36f48804a43fdd1/connord-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "770259c4a625dbf094bbc306453f8440", "sha256": "0b45744947753466f0d9ba44c220e3cff223f90f81104fe0d47272e4b0b2a96f" }, "downloads": -1, "filename": "connord-0.1.5.tar.gz", "has_sig": false, "md5_digest": "770259c4a625dbf094bbc306453f8440", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 101888, "upload_time": "2019-10-09T13:31:56", "url": "https://files.pythonhosted.org/packages/aa/d0/d623243c459c8f82bacfeca850f3d804b1bbf53d44e14ced894714021a09/connord-0.1.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2a39e17f69bf3611bc2e93353b99502a", "sha256": "a4764ca078908d294e5f05c79c8634276b6478009c6c7634c355dc9a3ba2d8b6" }, "downloads": -1, "filename": "connord-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "2a39e17f69bf3611bc2e93353b99502a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 114991, "upload_time": "2019-10-09T13:31:54", "url": "https://files.pythonhosted.org/packages/5c/b9/a9ea77d02c604bd09d58f6bacbedebd697c2f1a52b90c36f48804a43fdd1/connord-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "770259c4a625dbf094bbc306453f8440", "sha256": "0b45744947753466f0d9ba44c220e3cff223f90f81104fe0d47272e4b0b2a96f" }, "downloads": -1, "filename": "connord-0.1.5.tar.gz", "has_sig": false, "md5_digest": "770259c4a625dbf094bbc306453f8440", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 101888, "upload_time": "2019-10-09T13:31:56", "url": "https://files.pythonhosted.org/packages/aa/d0/d623243c459c8f82bacfeca850f3d804b1bbf53d44e14ced894714021a09/connord-0.1.5.tar.gz" } ] }