Giter Club home page Giter Club logo

cupcake's Introduction

Cupcake Bridge

Cupcake Bridge helps users makes bridges automagically! Get the Cupcake browser extension for Chrome.

Releases

The browser extension for Firefox is being rewritten as it has difficulty making websocket connections.

What even is Cupcake?

Cupcake is a wrapper for a pluggable transport called Snowflake. This makes it easy for people who want to contribute some of their bandwidth to create special Tor pathways that are harder to block. As with all circumvention projects, there's a lot more to it than that, but that is the jist.

Cupcake can be distributed in two ways:

  • As a chrome extension (turning your computer in to a temporary pathway)
  • As a module/theme/app on popular web platforms (turning every visitor to your site in to a temporary proxy). These are currently being rewritten to accomodate Snowflake.

How to help

The easiest way to help the project is by installing one of the browser extensions. It's not resource intensive at all -- Snowflake uses about as much bandwidth in a day as a 5-minute YouTube video.

Code notes

chrome/manifest.json

  • incognito:split This is useful during testing, so that incognito won't use cookies from standard browsing mode.
  • incognito:spanning When deployed, prevents incognito windows from creating additional Cupcake processes. Proxy will continue even if all the browser windows are in incognito mode.
  • permissions:background is used so that the extension will notify of updates and display the post-installation page. Also used so that Cupcake will start/run on startup, before the browser is started (Windows only).
  • permissions:cookies allows reading/writing of cookies, but may not be necessary, since Cupcake doesn't currently use the Cookies API.

Security

In 2015, a full security audit of both Cupcake and Flashproxy was conducted by Cure53. Both projects passed the audit with compliments. The full report is available here.

Financials

Most of the Cupcake Bridge projects are self-funded by @glamrock, but major modifications to the first versions of Chrome and Firefox extensions were covered under a generous grant from the Open Tech Fund from 2013-2014.

History

Previously, Cupcake included Flashproxy rather than Snowflake. Cupcake has existed since 2012, and Snowflake was created a couple of years after Cupcake. Over time, it became clear that Snowflake was becoming more useful for at-risk users, so I made the switch in early 2019. The old readme is available here.

License

My software is free to use, free to give to friends, & open-source, so everyone can make sure it's safe for people to use. Want to make changes? Go for it! ๐Ÿถ Cupcake uses the Revised BSD license -- see license.txt for more legal info.

References

[1] https://snowflake.torproject.org/ [2] https://crypto.stanford.edu/flashproxy/

cupcake's People

Contributors

cholmes avatar forceflow avatar glamrock avatar newgiin avatar uzairfarooq avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cupcake's Issues

More immediate/obvious visual feedback

The badges for different states are useful, but I have to click on cupcake to see them. It would be cool if the toolbar icon changed color (maybe the icing?) to indicate whether it's working or not. I'm thinking two colors, one for IT'S WORKING! and one for PLEASE INVESTIGATE FURTHER. Otherwise, cupcake could be failing and I'll never know because why would I check?

Accessibility device compatibility

I should make accessibility enhancements to make the Cupcake more usable for the visually impaired and people who use accessibility devices.

I could make this happen with ARIA markup. The most commonly used screen readers offer support for ARIA and some automatically select a speech/aural stylesheet if one is offered. (aural was offered for CSS2, speech is the variety used in CSS3. Backwards compatibility is in play, but given that Cupcake only exists for modern browsers, I'm just going for CSS3).

Cupcake is small enough that this would dictate the accessibility tree in a pretty straightforward way. Instead of listing current and possible statuses (as it does now), Cupcake will just list the current status and ways to resolve it, if necessary. This will be partly implemented as part of the UX overhaul.

References:

(note to self: JAWS 8 is the IE6 of screen readers)

Status lists itself as "dead" inaccurately

So right now, rapid network changes will trigger a false dead signal and seemingly remain that way. However, it is not actually dead or disabled in any way, just idle. It will still become active, and after it returns to an idle state, it displays the correct icon.

This happens in a no-internet environment and when behind a captive portal. (Which, given that I am frequently behind captive portals, this likely happens more than with most users).

Proposed initial fixes:

  • A) set background to re-initialize flashproxy.js at regular intervals, if the status is something other than active.
  • B) force dead-status flash proxies to retry connection every 10 minutes.

Future upstream fixes:

  • Change dead to waiting, since it seems to be waiting for a real connection
  • Ensure that flash proxies with dead/waiting status occasionally re-check connection

Edit: this is also Tor issue #11400.

Cannot install issue

Hello!
Firefox 50.1.0, Ubuntu 16.04
When I try to install from the https://addons.mozilla.org/en-US/firefox/addon/cupcakebridge/?src=ss
In the end comes the pop up that it can only install if I restart firefox. If I do click restart it does, but doesnt seem that it installed cupcake (no icon on the toolbar)
However, it does list in the "Add ons" of firefox, but without an icon.
Probably I'm missing something, but Id like to see an indicator if my browser is a proxy.

Snowflake integration

Integration of Snowflake with Cupcake will begin later this week at the Tor dev meeting hackathon. Initially, this will be in the browser extensions, with later plans for WordPress/etc.

Check out branch pink-snowball to work on this.

[1] https://github.com/keroserene/snowflake

Extension doesn't display in Firefox / WebExtension migration

Previously, the Cupcake extension would be displayed near the address bar by default. At some point, Firefox updated and the extension no longer has this default behavior. Mozilla's automated testing of extensions didn't catch the incompatibility.

Normally I'd be correcting this instead of filing a ticket, but I will instead take the approach of recreating the Firefox extension to be compatible with the new extension system. It's important to note this as the division point between Cupcake being a classic Firefox extension and becoming a new-style Firefox WebExtension. Hence, ticket. =)

UI redesign

While I don't entirely agree with comments about the Chrome extension's current design, it will be redesigned to make it easier for users to understand. This should also help with user retention to some degree.

flashproxy is effectively disabled after 5 failed connections

I fixed this just now upstream:

https://gitweb.torproject.org/flashproxy.git/commitdiff/05b9c101ba9afe4653d1eff6f5414f90f22ef042

I guess this is more important for cupcake, since people leave their browsers running for longer periods of time. In my experience it takes about a day to reach 5 failed connections, then after that the unfixed flashproxy is useless.

(Generally, you probably want to have some way of being notified about changes to flashproxy.js from us upstream.)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.