aboutsummaryrefslogtreecommitdiff
path: root/snap/snapcraft.yaml
blob: 84104cd89751b4f7192253b59c2b0b12b425503f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
name: onionshare
base: core18
version: '2.2'
summary: Securely and anonymously send and receive files, and publish onion sites
description: |
  OnionShare is an open source tool for securely and anonymously sending and
  receiving files and publishing websites using Tor onion services. It works by
  starting a web server directly on your computer and making it accessible as
  an unguessable Tor web address that others can load in Tor Browser. It
  doesn't require setting up a separate server, using a third party service, or
  even logging into an account.

grade: devel # must be 'stable' to release into candidate/stable channels
confinement: devmode # use 'strict' once you have the right plugs and slots

apps:
  onionshare-gui:
    common-id: org.onionshare.OnionShareGui
    command: onionshare-gui
    plugs:
      - home
      - opengl
      - network
      - network-bind
      - pulseaudio
  
  # onionshare:
  #   common-id: org.onionshare.OnionShare
  #   command: onionshare
  #   plugs:
  #     - home
  #     - network
  #     - network-bind

parts:
  onionshare:
    source: https://github.com/micahflee/onionshare.git
    source-type: git
    source-branch: 1111_snap
    plugin: python
    python-version: python3
    python-packages:
      - poetry
    stage-packages:
      - libatk-bridge2.0-0
      - libatspi2.0-0
      - libgtk-3-0
      - python3-pyqt5
    after: [qt5, tor, obfs4]
  
  # Install Qt5 pre-compiled binary, because it's much simpler than
  # building from source
  qt5:
    plugin: nil
    build-packages:
      - xvfb
      - libdbus-1-3
      - libxkbcommon-x11-0
      - libxkbcommon-x11-dev
      - libfontconfig1
    override-pull: |
      wget https://download.qt.io/official_releases/qt/5.14/5.14.0/qt-opensource-linux-x64-5.14.0.run
      echo "4379f147c6793ec7e7349d2f9ee7d53b8ab6ea4e4edf8ee0574a75586a6a6e0e *qt-opensource-linux-x64-5.14.0.run" | shasum -a 256 --check
      chmod +x qt-opensource-linux-x64-5.14.0.run
    override-build: |
      # qt-installer-script.js
      echo "function Controller(){installer.installationFinished.connect(proceed)}function logCurrentPage(){var pageName=page().objectName;var pagePrettyTitle=page().title;console.log(\"At page: \"+pageName+\" ('\"+pagePrettyTitle+\"')\")}function page(){return gui.currentPageWidget()}function proceed(button,delay){gui.clickButton(button||buttons.NextButton,delay)}Controller.prototype.WelcomePageCallback=function(){logCurrentPage();proceed(buttons.NextButton,2000)};Controller.prototype.CredentialsPageCallback=function(){logCurrentPage();proceed()};Controller.prototype.IntroductionPageCallback=function(){logCurrentPage();proceed()};Controller.prototype.TargetDirectoryPageCallback=function(){logCurrentPage();proceed()};Controller.prototype.ComponentSelectionPageCallback=function(){logCurrentPage();page().deselectAll();page().selectComponent(\"qt.qt5.5140.gcc_64\");proceed()};Controller.prototype.LicenseAgreementPageCallback=function(){logCurrentPage();page().AcceptLicenseRadioButton.checked=true;gui.clickButton(buttons.NextButton)};Controller.prototype.ReadyForInstallationPageCallback=function(){logCurrentPage();proceed()};Controller.prototype.PerformInstallationPageCallback=function(){logCurrentPage()};Controller.prototype.FinishedPageCallback=function(){logCurrentPage();proceed(buttons.FinishButton)};Controller.prototype.DynamicTelemetryPluginFormCallback=function(){logCurrentPage();console.log(Object.keys(page().TelemetryPluginForm.statisticGroupBox));var radioButtons=page().TelemetryPluginForm.statisticGroupBox;radioButtons.disableStatisticRadioButton.checked=true;proceed()};" > qt-installer-script.js
      # Disable Qt installer from phoning home via hosts file
      echo "127.0.0.1 iapi.qt.io.herokudns.com" >> /etc/hosts
      # Install Qt5
      xvfb-run ./qt-opensource-linux-x64-5.14.0.run --script qt-installer-script.js --verbose

  tor:
    source: https://dist.torproject.org/tor-0.4.2.7.tar.gz
    source-checksum: sha256/06a1d835ddf382f6bca40a62e8fb40b71b2f73d56f0d53523c8bd5caf9b3026d
    source-type: tar
    plugin: autotools
    build-packages:
      - libssl-dev
      - zlib1g-dev
    after: [libevent]
  
  libevent:
    source: https://github.com/libevent/libevent/releases/download/release-2.1.11-stable/libevent-2.1.11-stable.tar.gz
    source-checksum: sha256/a65bac6202ea8c5609fd5c7e480e6d25de467ea1917c08290c521752f147283d
    source-type: tar
    plugin: autotools

  obfs4:
    source: pass
    plugin: go
    go-importpath: gitlab.com/yawning/obfs4
    source: https://gitlab.com/yawning/obfs4
    source-type: git