summaryrefslogtreecommitdiff
path: root/snap/snapcraft.yaml
blob: f42a1f2845decf5f1adad07925baa6a71d18322d (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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
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:
      - desktop
      - home
      - network
      - network-bind
      - removable-media
  
  onionshare:
    common-id: org.onionshare.OnionShare
    command: onionshare
    plugs:
      - home
      - network
      - network-bind
      - removable-media

parts:
  onionshare:
    source: .
    plugin: python
    python-version: python3
    python-packages:
      - poetry
    stage-packages:
      - libatk-bridge2.0-0
      - libatspi2.0-0
      - libgtk-3-0
    after: [qt5, tor, obfs4]
  
  # Install Qt5 pre-compiled binary, because it's much simpler than
  # building from source
  qt5:
    plugin: nil
    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
    build-packages:
      - xvfb
      - libdbus-1-3
      - libxkbcommon-x11-0
      - libxkbcommon-x11-dev
      - libfontconfig1
    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();var dir=installer.environmentVariable('SNAPCRAFT_PART_INSTALL')+'/opt/Qt5.14.0';console.log('Installing to '+dir);page().TargetDirectoryLineEdit.setText(dir);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
      rm -rf $SNAPCRAFT_PART_INSTALL/opt/Qt5.14.0
      xvfb-run ./qt-opensource-linux-x64-5.14.0.run --script qt-installer-script.js --verbose
    stage-packages:
      - libdrm2
      - libfontconfig1
      - libfreetype6
      - libgl1
      - libglvnd0
      - libglx0
      - libpng16-16
      - libx11-6
      - libx11-xcb1
      - libxau6
      - libxcb-glx0
      - libxcb-xkb1
      - libxcb1
      - libxdmcp6
      - libxext6
      - libxkbcommon-x11-0
      - libxkbcommon0
      - libegl1
      - libasound2
      - libbluetooth3
      - libcairo-gobject2
      - libcairo2
      - libcups2
      - libgdk-pixbuf2.0-0
      - libgtk3.0-cil
      - libgstreamer-plugins-base1.0-0
      - libodbc1
      - libpango-1.0-0
      - libpangocairo-1.0-0
      - libpq5
      - libpulse-mainloop-glib0
      - libpulse0
      - libspeechd2
      - libwayland-client0
      - libwayland-cursor0
      - libwayland-egl1
      - libxml2
      - libqt5webengine5
      - libqt5webenginecore5

  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