Remove Sandstorm support (#13773)

pull/13753/head^2
Diego Sampaio 6 years ago committed by Rodrigo Nascimento
parent db32757794
commit df23847319
  1. 1
      .circleci/config.yml
  2. 1
      .meteor/packages
  3. 1
      .meteor/versions
  4. 1
      .sandstorm/.gitignore
  5. 1
      .sandstorm/CHANGELOG.md
  6. 14
      .sandstorm/README.md
  7. 104
      .sandstorm/Vagrantfile
  8. 23
      .sandstorm/build.sh
  9. 1
      .sandstorm/description.md
  10. 34
      .sandstorm/global-setup.sh
  11. 8
      .sandstorm/launcher.sh
  12. BIN
      .sandstorm/pgp-keyring
  13. BIN
      .sandstorm/pgp-signature
  14. 52
      .sandstorm/rocket.chat-128.svg
  15. 37
      .sandstorm/rocket.chat-150.svg
  16. 32
      .sandstorm/rocket.chat-24.svg
  17. 115
      .sandstorm/sandstorm-pkgdef.capnp
  18. BIN
      .sandstorm/screenshot1.png
  19. BIN
      .sandstorm/screenshot2.png
  20. BIN
      .sandstorm/screenshot3.png
  21. BIN
      .sandstorm/screenshot4.png
  22. 66
      .sandstorm/setup.sh
  23. 1
      .sandstorm/stack
  24. 1
      .scripts/set-version.js
  25. 1
      .travis.yml
  26. 37
      .travis/sandstorm.sh
  27. 7
      README.md
  28. 3
      app/file-upload/server/lib/requests.js
  29. 2
      app/lib/client/lib/settings.js
  30. 8
      app/lib/server/functions/getAvatarSuggestionForUser.js
  31. 5
      app/lib/server/functions/getUsernameSuggestion.js
  32. 8
      app/lib/server/functions/insertMessage.js
  33. 12
      app/lib/server/functions/sendMessage.js
  34. 10
      app/lib/server/lib/sendNotificationsOnMessage.js
  35. 4
      app/lib/server/methods/sendMessage.js
  36. 3
      app/oembed/client/baseWidget.js
  37. 2
      app/oembed/client/index.js
  38. 11
      app/oembed/client/oembedSandstormGrain.html
  39. 28
      app/oembed/client/oembedSandstormGrain.js
  40. 9
      app/oembed/server/server.js
  41. 6
      app/sandstorm/client/index.js
  42. 30
      app/sandstorm/client/powerboxListener.js
  43. 15
      app/sandstorm/client/setPath.js
  44. 8
      app/sandstorm/index.js
  45. 42
      app/sandstorm/server/events.js
  46. 7
      app/sandstorm/server/index.js
  47. 39
      app/sandstorm/server/lib.js
  48. 50
      app/sandstorm/server/powerbox.js
  49. 2
      app/smarsh-connector/server/functions/generateEml.js
  50. 14
      app/theme/client/imports/general/base_old.css
  51. 6
      app/ui-login/client/login/form.html
  52. 4
      app/ui-login/client/login/form.js
  53. 4
      app/ui/client/lib/notification.js
  54. 1
      client/importPackages.js
  55. 1
      package.json
  56. 1
      packages/rocketchat-i18n/i18n/af.i18n.json
  57. 1
      packages/rocketchat-i18n/i18n/ar.i18n.json
  58. 1
      packages/rocketchat-i18n/i18n/az.i18n.json
  59. 1
      packages/rocketchat-i18n/i18n/be-BY.i18n.json
  60. 1
      packages/rocketchat-i18n/i18n/bg.i18n.json
  61. 1
      packages/rocketchat-i18n/i18n/bs.i18n.json
  62. 1
      packages/rocketchat-i18n/i18n/ca.i18n.json
  63. 1
      packages/rocketchat-i18n/i18n/cs.i18n.json
  64. 1
      packages/rocketchat-i18n/i18n/cy.i18n.json
  65. 1
      packages/rocketchat-i18n/i18n/da.i18n.json
  66. 1
      packages/rocketchat-i18n/i18n/de-AT.i18n.json
  67. 1
      packages/rocketchat-i18n/i18n/de-IN.i18n.json
  68. 1
      packages/rocketchat-i18n/i18n/de.i18n.json
  69. 1
      packages/rocketchat-i18n/i18n/el.i18n.json
  70. 1
      packages/rocketchat-i18n/i18n/en.i18n.json
  71. 1
      packages/rocketchat-i18n/i18n/eo.i18n.json
  72. 1
      packages/rocketchat-i18n/i18n/es.i18n.json
  73. 1
      packages/rocketchat-i18n/i18n/fa.i18n.json
  74. 1
      packages/rocketchat-i18n/i18n/fi.i18n.json
  75. 1
      packages/rocketchat-i18n/i18n/fr.i18n.json
  76. 1
      packages/rocketchat-i18n/i18n/hr.i18n.json
  77. 1
      packages/rocketchat-i18n/i18n/hu.i18n.json
  78. 1
      packages/rocketchat-i18n/i18n/id.i18n.json
  79. 1
      packages/rocketchat-i18n/i18n/it.i18n.json
  80. 1
      packages/rocketchat-i18n/i18n/ja.i18n.json
  81. 1
      packages/rocketchat-i18n/i18n/km.i18n.json
  82. 1
      packages/rocketchat-i18n/i18n/ko.i18n.json
  83. 1
      packages/rocketchat-i18n/i18n/ku.i18n.json
  84. 1
      packages/rocketchat-i18n/i18n/lo.i18n.json
  85. 1
      packages/rocketchat-i18n/i18n/lt.i18n.json
  86. 1
      packages/rocketchat-i18n/i18n/lv.i18n.json
  87. 1
      packages/rocketchat-i18n/i18n/mn.i18n.json
  88. 1
      packages/rocketchat-i18n/i18n/ms-MY.i18n.json
  89. 1
      packages/rocketchat-i18n/i18n/nl.i18n.json
  90. 1
      packages/rocketchat-i18n/i18n/no.i18n.json
  91. 1
      packages/rocketchat-i18n/i18n/pl.i18n.json
  92. 1
      packages/rocketchat-i18n/i18n/pt-BR.i18n.json
  93. 1
      packages/rocketchat-i18n/i18n/pt.i18n.json
  94. 1
      packages/rocketchat-i18n/i18n/ro.i18n.json
  95. 1
      packages/rocketchat-i18n/i18n/ru.i18n.json
  96. 1
      packages/rocketchat-i18n/i18n/sk-SK.i18n.json
  97. 1
      packages/rocketchat-i18n/i18n/sl-SI.i18n.json
  98. 1
      packages/rocketchat-i18n/i18n/sq.i18n.json
  99. 1
      packages/rocketchat-i18n/i18n/sr.i18n.json
  100. 1
      packages/rocketchat-i18n/i18n/sv.i18n.json
  101. Some files were not shown because too many files have changed in this diff Show More

@ -287,7 +287,6 @@ jobs:
source .circleci/setdeploydir.sh
bash .circleci/setupsig.sh
bash .circleci/namefiles.sh
# echo ".circleci/sandstorm.sh"
aws s3 cp $ROCKET_DEPLOY_DIR/ s3://download.rocket.chat/build/ --recursive

@ -59,7 +59,6 @@ jparker:gravatar
kadira:blaze-layout
kadira:flow-router
keepnox:perfect-scrollbar
kenton:accounts-sandstorm
mizzao:autocomplete
mizzao:timesync
mrt:reactive-store

@ -67,7 +67,6 @@ juliancwirko:postcss@2.0.3
kadira:blaze-layout@2.3.0
kadira:flow-router@2.12.1
keepnox:perfect-scrollbar@0.6.8
kenton:accounts-sandstorm@0.7.0
konecty:change-case@2.3.0
konecty:delayed-task@1.0.0
konecty:mongo-counter@0.0.5_3

@ -1 +0,0 @@
.vagrant

@ -1 +0,0 @@
### FIRST Sandstorm VERSION of Rocket.Chat

@ -1,14 +0,0 @@
# Publish commands
```
cd Rocket.Chat
vagrant-spk vm up && vagrant-spk dev
^C
vagrant-spk pack ../rocketchat.spk && vagrant-spk publish ../rocketchat.spk && vagrant-spk vm halt
```
# Reset commands
```
vagrant-spk vm halt && vagrant-spk vm destroy
```

@ -1,104 +0,0 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Guess at a reasonable name for the VM based on the folder vagrant-spk is
# run from. The timestamp is there to avoid conflicts if you have multiple
# folders with the same name.
VM_NAME = File.basename(File.dirname(File.dirname(__FILE__))) + "_sandstorm_#{Time.now.utc.to_i}"
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
# ugly hack to prevent hashicorp's bitrot. See https://github.com/hashicorp/vagrant/issues/9442
# this setting is required for pre-2.0 vagrant, but causes an error as of 2.0.3,
# remove entirely when confident nobody uses vagrant 1.x for anything.
unless Vagrant::DEFAULT_SERVER_URL.frozen?
Vagrant::DEFAULT_SERVER_URL.replace('https://vagrantcloud.com')
end
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# Base on the Sandstorm snapshots of the official Debian 9 (stretch) box with vboxsf support.
config.vm.box = "debian/contrib-stretch64"
config.vm.box_version = "9.3.0"
if Vagrant.has_plugin?("vagrant-vbguest") then
# vagrant-vbguest is a Vagrant plugin that upgrades
# the version of VirtualBox Guest Additions within each
# guest. If you have the vagrant-vbguest plugin, then it
# needs to know how to compile kernel modules, etc., and so
# we give it this hint about operating system type.
config.vm.guest = "debian"
end
# We forward port 6080, the Sandstorm web port, so that developers can
# visit their sandstorm app from their browser as local.sandstorm.io:6080
# (aka 127.0.0.1:6080).
config.vm.network :forwarded_port, guest: 6080, host: 6080
# Use a shell script to "provision" the box. This installs Sandstorm using
# the bundled installer.
config.vm.provision "shell", inline: "sudo bash /opt/app/.sandstorm/global-setup.sh", keep_color: true
# Then, do stack-specific and app-specific setup.
config.vm.provision "shell", inline: "sudo bash /opt/app/.sandstorm/setup.sh", keep_color: true
# Shared folders are configured per-provider since vboxsf can't handle >4096 open files,
# NFS requires privilege escalation every time you bring a VM up,
# and 9p is only available on libvirt.
# Calculate the number of CPUs and the amount of RAM the system has,
# in a platform-dependent way; further logic below.
cpus = nil
total_kB_ram = nil
host = RbConfig::CONFIG['host_os']
if host =~ /darwin/
cpus = `sysctl -n hw.ncpu`.to_i
total_kB_ram = `sysctl -n hw.memsize`.to_i / 1024
elsif host =~ /linux/
cpus = `nproc`.to_i
total_kB_ram = `grep MemTotal /proc/meminfo | awk '{print $2}'`.to_i
elsif host =~ /mingw/
# powershell may not be available on Windows XP and Vista, so wrap this in a rescue block
begin
cpus = `powershell -Command "(Get-WmiObject Win32_Processor -Property NumberOfLogicalProcessors | Select-Object -Property NumberOfLogicalProcessors | Measure-Object NumberOfLogicalProcessors -Sum).Sum"`.to_i
total_kB_ram = `powershell -Command "Get-CimInstance -class cim_physicalmemory | % $_.Capacity}"`.to_i / 1024
rescue
end
end
# Use the same number of CPUs within Vagrant as the system, with 1
# as a default.
#
# Use at least 512MB of RAM, and if the system has more than 2GB of
# RAM, use 1/4 of the system RAM. This seems a reasonable compromise
# between having the Vagrant guest operating system not run out of
# RAM entirely (which it basically would if we went much lower than
# 512MB) and also allowing it to use up a healthily large amount of
# RAM so it can run faster on systems that can afford it.
if cpus.nil? or cpus.zero?
cpus = 1
end
if total_kB_ram.nil? or total_kB_ram < 2048000
assign_ram_mb = 512
else
assign_ram_mb = (total_kB_ram / 1024 / 4)
end
# Actually apply these CPU/memory values to the providers.
config.vm.provider :virtualbox do |vb, override|
vb.cpus = cpus
vb.memory = assign_ram_mb
vb.name = VM_NAME
override.vm.synced_folder "..", "/opt/app"
override.vm.synced_folder ENV["HOME"] + "/.sandstorm", "/host-dot-sandstorm"
override.vm.synced_folder "..", "/vagrant", disabled: true
end
config.vm.provider :libvirt do |libvirt, override|
libvirt.cpus = cpus
libvirt.memory = assign_ram_mb
libvirt.default_prefix = VM_NAME
override.vm.synced_folder "..", "/opt/app", type: "9p", accessmode: "passthrough"
override.vm.synced_folder ENV["HOME"] + "/.sandstorm", "/host-dot-sandstorm", type: "9p", accessmode: "passthrough"
override.vm.synced_folder "..", "/vagrant", type: "9p", accessmode: "passthrough", disabled: true
end
end

@ -1,23 +0,0 @@
#!/bin/bash
set -x
set -euvo pipefail
# Make meteor bundle
sudo chown vagrant:vagrant /home/vagrant -R
cd /opt/app
meteor npm install capnp
meteor npm install
meteor build --directory /home/vagrant/
export NODE_ENV=production
# Use npm and node from the Meteor dev bundle to install the bundle's dependencies.
TOOL_VERSION=$(meteor show --ejson $(<.meteor/release) | grep '^ *"tool":' |
sed -re 's/^.*"(meteor-tool@[^"]*)".*$/\1/g')
TOOLDIR=$(echo $TOOL_VERSION | tr @ /)
PATH=$HOME/.meteor/packages/$TOOLDIR/mt-os.linux.x86_64/dev_bundle/bin:$PATH
cd /home/vagrant/bundle/programs/server
npm install --production
# Copy our launcher script into the bundle so the grain can start up.
mkdir -p /home/vagrant/bundle/opt/app/.sandstorm/
cp /opt/app/.sandstorm/launcher.sh /home/vagrant/bundle/opt/app/.sandstorm/

@ -1 +0,0 @@
The Complete Open Source Chat Solution. Rocket.Chat is a Web Chat Server, developed in JavaScript. It is a great solution for communities and companies wanting to privately host their own chat service or for developers looking forward to build and evolve their own chat platforms.

@ -1,34 +0,0 @@
#!/bin/bash
set -x
set -euvo pipefail
echo localhost > /etc/hostname
hostname localhost
# Install curl that is needed below.
apt-get update
apt-get install -y curl
curl https://install.sandstorm.io/ > /host-dot-sandstorm/caches/install.sh
SANDSTORM_CURRENT_VERSION=$(curl -fs "https://install.sandstorm.io/dev?from=0&type=install")
SANDSTORM_PACKAGE="sandstorm-$SANDSTORM_CURRENT_VERSION.tar.xz"
if [[ ! -f /host-dot-sandstorm/caches/$SANDSTORM_PACKAGE ]] ; then
curl --output "/host-dot-sandstorm/caches/$SANDSTORM_PACKAGE.partial" "https://dl.sandstorm.io/$SANDSTORM_PACKAGE"
mv "/host-dot-sandstorm/caches/$SANDSTORM_PACKAGE.partial" "/host-dot-sandstorm/caches/$SANDSTORM_PACKAGE"
fi
bash /host-dot-sandstorm/caches/install.sh -d -e "/host-dot-sandstorm/caches/$SANDSTORM_PACKAGE"
modprobe ip_tables
# Make the vagrant user part of the sandstorm group so that commands like
# `spk dev` work.
usermod -a -G 'sandstorm' 'vagrant'
# Bind to all addresses, so the vagrant port-forward works.
sudo sed --in-place='' --expression='s/^BIND_IP=.*/BIND_IP=0.0.0.0/' /opt/sandstorm/sandstorm.conf
# TODO: update sandstorm installer script to ask about dev accounts, and
# specify a value for this option in the default config?
if ! grep --quiet --no-messages ALLOW_DEV_ACCOUNTS=true /opt/sandstorm/sandstorm.conf ; then
echo "ALLOW_DEV_ACCOUNTS=true" | sudo tee -a /opt/sandstorm/sandstorm.conf
sudo service sandstorm restart
fi
# Enable apt-cacher-ng proxy to make things faster if one appears to be running on the gateway IP
GATEWAY_IP=$(ip route | grep ^default | cut -d ' ' -f 3)
if nc -z "$GATEWAY_IP" 3142 ; then
echo "Acquire::http::Proxy \"http://$GATEWAY_IP:3142\";" > /etc/apt/apt.conf.d/80httpproxy
fi

@ -1,8 +0,0 @@
#!/bin/bash
set -x
set -euvo pipefail
export METEOR_SETTINGS='{"public": {"sandstorm": true}}'
export NODE_ENV=production
export SETTINGS_HIDDEN="Email,Email_Header,Email_Footer,SMTP_Host,SMTP_Port,SMTP_Username,SMTP_Password,From_Email,SMTP_Test_Button,Invitation_Customized,Invitation_Subject,Invitation_HTML,Accounts_Enrollment_Customized,Accounts_Enrollment_Email_Subject,Accounts_Enrollment_Email,Accounts_UserAddedEmail_Customized,Accounts_UserAddedEmailSubject,Accounts_UserAddedEmail,Forgot_Password_Customized,Forgot_Password_Email_Subject,Forgot_Password_Email,Verification_Customized,Verification_Email_Subject,Verification_Email"
exec node /start.js -p 8000

Binary file not shown.

Binary file not shown.

@ -1,52 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="-241 333 128 128" style="enable-background:new -241 333 128 128;" xml:space="preserve">
<style type="text/css">
.st0{opacity:0.6;fill:#D1D1D1;enable-background:new ;}
.st1{clip-path:url(#SVGID_2_);}
.st2{fill:#F7F7F7;}
.st3{fill:#C1272D;}
.st4{fill:#FFFFFF;}
.st5{fill:#CCCCCC;}
</style>
<path class="st0" d="M-120.3,461.2h-110c-4,0-7.3-3.2-7.3-7.3v-110c0-4,3.2-7.3,7.3-7.3h110c4,0,7.3,3.2,7.3,7.3v110
C-113,457.9-116.2,461.2-120.3,461.2z"/>
<g>
<g>
<defs>
<path id="SVGID_1_" d="M-122.5,457.7h-112.3c-3.4,0-6.1-2.7-6.1-6.1V339.3c0-3.4,2.7-6.1,6.1-6.1h112.3c3.4,0,6.1,2.7,6.1,6.1
v112.3C-116.4,455-119.1,457.7-122.5,457.7z"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_1_" style="overflow:visible;"/>
</clipPath>
<g class="st1">
<rect x="-243.5" y="331.2" class="st2" width="129.9" height="128"/>
</g>
</g>
</g>
<path class="st3" d="M-128.6,392.8c0-5.1-1.5-10.1-4.6-14.7c-2.7-4.1-6.6-7.8-11.4-10.8c-9.3-5.9-21.5-9.2-34.4-9.2
c-4.3,0-8.5,0.4-12.7,1.1c-2.6-2.4-5.5-4.5-8.7-6.2c-16.9-8.2-30.9-0.2-30.9-0.2s13,10.7,10.9,20.1c-5.8,5.8-9,12.7-9,20
c0,0,0,0,0,0.1c0,0,0,0,0,0.1c0,7.3,3.2,14.2,9,20c2.1,9.4-10.9,20.1-10.9,20.1s14,8,30.9-0.2c3.2-1.7,6.1-3.8,8.7-6.2
c4.1,0.7,8.4,1.1,12.7,1.1c12.9,0,25.1-3.3,34.4-9.2c4.8-3.1,8.6-6.7,11.4-10.8c3-4.6,4.6-9.5,4.6-14.7
C-128.6,392.9-128.6,392.9-128.6,392.8C-128.6,392.8-128.6,392.8-128.6,392.8z"/>
<path class="st4" d="M-178.9,365.4c23.8,0,43.2,12.3,43.2,27.6c0,15.2-19.3,27.6-43.2,27.6c-5.3,0-10.4-0.6-15.1-1.7
c-4.8,5.7-15.3,13.7-25.5,11.1c3.3-3.6,8.2-9.6,7.2-19.5c-6.1-4.8-9.8-10.8-9.8-17.5C-222,377.7-202.7,365.4-178.9,365.4"/>
<g>
<g>
<circle class="st3" cx="-178.9" cy="393.8" r="5.7"/>
</g>
<g>
<circle class="st3" cx="-158.9" cy="393.8" r="5.7"/>
</g>
<g>
<circle class="st3" cx="-198.8" cy="393.8" r="5.7"/>
</g>
</g>
<g>
<path class="st5" d="M-178.9,416.9c-5.3,0-10.4-0.5-15.1-1.5c-4.2,4.4-12.9,10.3-21.9,10.1c-1.2,1.8-2.5,3.3-3.6,4.5
c10.2,2.6,20.7-5.4,25.5-11.1c4.7,1.1,9.8,1.7,15.1,1.7c23.6,0,42.9-12.1,43.2-27.2C-136,406.3-155.2,416.9-178.9,416.9z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

@ -1,37 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="-230 322 150 150" style="enable-background:new -230 322 150 150;" xml:space="preserve">
<style type="text/css">
.st0{fill:#F7F7F7;}
.st1{fill:#C1272D;}
.st2{fill:#FFFFFF;}
.st3{fill:#CCCCCC;}
</style>
<g>
<rect x="-230" y="322" class="st0" width="150" height="150"/>
</g>
<path class="st1" d="M-90.2,395.1c0-6.5-2-12.8-5.8-18.6c-3.5-5.2-8.3-9.8-14.4-13.7c-11.8-7.5-27.2-11.7-43.5-11.7
c-5.4,0-10.8,0.5-16,1.4c-3.2-3-7-5.7-11-7.9c-21.4-10.4-39.1-0.2-39.1-0.2s16.5,13.5,13.8,25.4c-7.4,7.3-11.4,16.1-11.4,25.3
c0,0,0,0.1,0,0.1c0,0,0,0.1,0,0.1c0,9.2,4,18,11.4,25.3c2.7,11.9-13.8,25.4-13.8,25.4s17.7,10.1,39.1-0.2c4-2.2,7.8-4.9,11-7.9
c5.2,0.9,10.6,1.4,16,1.4c16.3,0,31.8-4.1,43.5-11.6c6.1-3.9,10.9-8.5,14.4-13.7c3.8-5.8,5.8-12.1,5.8-18.6
C-90.2,395.3-90.2,395.3-90.2,395.1C-90.2,395.2-90.2,395.2-90.2,395.1z"/>
<path class="st2" d="M-153.9,360.4c30.2,0,54.7,15.6,54.7,34.9c0,19.3-24.5,34.9-54.7,34.9c-6.7,0-13.2-0.8-19.1-2.2
c-6,7.3-19.3,17.4-32.3,14.1c4.2-4.5,10.4-12.1,9.1-24.7c-7.7-6-12.4-13.7-12.4-22.1C-208.6,376-184.1,360.4-153.9,360.4"/>
<g>
<g>
<circle class="st1" cx="-153.9" cy="396.4" r="7.3"/>
</g>
<g>
<circle class="st1" cx="-128.7" cy="396.4" r="7.3"/>
</g>
<g>
<circle class="st1" cx="-179.2" cy="396.4" r="7.3"/>
</g>
</g>
<g>
<path class="st3" d="M-153.9,425.6c-6.7,0-13.2-0.7-19.1-1.9c-5.3,5.6-16.3,13-27.7,12.8c-1.5,2.3-3.1,4.1-4.5,5.6
c12.9,3.3,26.2-6.8,32.3-14.1c5.9,1.4,12.4,2.2,19.1,2.2c30,0,54.3-15.4,54.7-34.5C-99.7,412.3-124,425.6-153.9,425.6z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.9 KiB

@ -1,32 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="-293 385 24 24" style="enable-background:new -293 385 24 24;" xml:space="preserve">
<style type="text/css">
.st0{fill:#C1272D;}
.st1{fill:#FFFFFF;}
.st2{fill:#CCCCCC;}
</style>
<path class="st0" d="M-269.9,397c0-1.1-0.3-2.2-1-3.2c-0.6-0.9-1.4-1.7-2.5-2.4c-2-1.3-4.7-2-7.6-2c-0.9,0-1.9,0.1-2.8,0.2
c-0.6-0.5-1.2-1-1.9-1.4c-3.7-1.8-6.8,0-6.8,0s2.9,2.3,2.4,4.4c-1.3,1.3-2,2.8-2,4.4c0,0,0,0,0,0c0,0,0,0,0,0c0,1.6,0.7,3.1,2,4.4
c0.5,2.1-2.4,4.4-2.4,4.4s3.1,1.8,6.8,0c0.7-0.4,1.4-0.8,1.9-1.4c0.9,0.2,1.8,0.2,2.8,0.2c2.8,0,5.5-0.7,7.6-2
c1.1-0.7,1.9-1.5,2.5-2.4C-270.2,399.2-269.9,398.1-269.9,397C-269.9,397-269.9,397-269.9,397C-269.9,397-269.9,397-269.9,397z"/>
<path class="st1" d="M-280.9,391c5.2,0,9.5,2.7,9.5,6.1c0,3.3-4.2,6.1-9.5,6.1c-1.2,0-2.3-0.1-3.3-0.4c-1,1.3-3.4,3-5.6,2.4
c0.7-0.8,1.8-2.1,1.6-4.3c-1.3-1-2.2-2.4-2.2-3.8C-290.4,393.7-286.2,391-280.9,391"/>
<g>
<g>
<circle class="st0" cx="-280.9" cy="397.2" r="1.3"/>
</g>
<g>
<circle class="st0" cx="-276.5" cy="397.2" r="1.3"/>
</g>
<g>
<circle class="st0" cx="-285.3" cy="397.2" r="1.3"/>
</g>
</g>
<g>
<path class="st2" d="M-280.9,402.3c-1.2,0-2.3-0.1-3.3-0.3c-0.9,1-2.8,2.3-4.8,2.2c-0.3,0.4-0.5,0.7-0.8,1c2.2,0.6,4.5-1.2,5.6-2.4
c1,0.2,2.1,0.4,3.3,0.4c5.2,0,9.4-2.7,9.5-6C-271.5,400-275.7,402.3-280.9,402.3z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

@ -1,115 +0,0 @@
@0xbbbe049af795122e;
using Spk = import "/sandstorm/package.capnp";
# This imports:
# $SANDSTORM_HOME/latest/usr/include/sandstorm/package.capnp
# Check out that file to see the full, documented package definition format.
const pkgdef :Spk.PackageDefinition = (
# The package definition. Note that the spk tool looks specifically for the
# "pkgdef" constant.
id = "vfnwptfn02ty21w715snyyczw0nqxkv3jvawcah10c6z7hj1hnu0",
# Your app ID is actually its public key. The private key was placed in
# your keyring. All updates must be signed with the same key.
manifest = (
# This manifest is included in your app package to tell Sandstorm
# about your app.
appTitle = (defaultText = "Rocket.Chat"),
appVersion = 129, # Increment this for every release.
appMarketingVersion = (defaultText = "1.0.0-develop"),
# Human-readable representation of appVersion. Should match the way you
# identify versions of your app in documentation and marketing.
actions = [
# Define your "new document" handlers here.
( title = (defaultText = "New Rocket.Chat"),
command = .myCommand
# The command to run when starting for the first time. (".myCommand"
# is just a constant defined at the bottom of the file.)
)
],
continueCommand = .myCommand,
# This is the command called to start your app back up after it has been
# shut down for inactivity. Here we're using the same command as for
# starting a new instance, but you could use different commands for each
# case.
metadata = (
icons = (
appGrid = (svg = embed "rocket.chat-128.svg"),
grain = (svg = embed "rocket.chat-24.svg"),
market = (svg = embed "rocket.chat-150.svg"),
),
website = "https://rocket.chat",
codeUrl = "https://github.com/RocketChat/Rocket.Chat",
license = (openSource = mit),
categories = [communications, productivity, office, social, developerTools],
author = (
contactEmail = "team@rocket.chat",
pgpSignature = embed "pgp-signature",
upstreamAuthor = "Rocket.Chat",
),
pgpKeyring = embed "pgp-keyring",
description = (defaultText = embed "description.md"),
shortDescription = (defaultText = "Chat app"),
screenshots = [
(width = 1024, height = 696, png = embed "screenshot1.png"),
(width = 1024, height = 696, png = embed "screenshot2.png"),
(width = 1024, height = 696, png = embed "screenshot3.png"),
(width = 1024, height = 696, png = embed "screenshot4.png")
],
changeLog = (defaultText = embed "CHANGELOG.md"),
),
),
sourceMap = (
# The following directories will be copied into your package.
searchPath = [
( sourcePath = "/home/vagrant/bundle" ),
( sourcePath = "/opt/meteor-spk/meteor-spk.deps" )
]
),
alwaysInclude = [ "." ],
# This says that we always want to include all files from the source map.
# (An alternative is to automatically detect dependencies by watching what
# the app opens while running in dev mode. To see what that looks like,
# run `spk init` without the -A option.)
bridgeConfig = (
viewInfo = (
eventTypes = [
(name = "message", verbPhrase = (defaultText = "sent message")),
(name = "privateMessage", verbPhrase = (defaultText = "sent private message"), requiredPermission = (explicitList = void)),
]
),
saveIdentityCaps = true,
),
);
const myCommand :Spk.Manifest.Command = (
# Here we define the command used to start up your server.
argv = ["/sandstorm-http-bridge", "8000", "--", "/opt/app/.sandstorm/launcher.sh"],
environ = [
# Note that this defines the *entire* environment seen by your app.
(key = "PATH", value = "/usr/local/bin:/usr/bin:/bin"),
(key = "SANDSTORM", value = "1"),
(key = "HOME", value = "/var"),
(key = "Statistics_reporting", value = "false"),
(key = "Accounts_AllowUserAvatarChange", value = "false"),
(key = "Accounts_AllowUserProfileChange", value = "false"),
(key = "BABEL_CACHE_DIR", value = "/var/babel_cache")
]
);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 215 KiB

@ -1,66 +0,0 @@
#!/bin/bash
set -x
set -euvo pipefail
apt-get update
apt-get install build-essential git -y
cd /opt/
NODE_ENV=production
PACKAGE=meteor-spk-0.4.1
PACKAGE_FILENAME="$PACKAGE.tar.xz"
CACHE_TARGET="/host-dot-sandstorm/caches/${PACKAGE_FILENAME}"
# Fetch meteor-spk tarball if not cached
if [ ! -f "$CACHE_TARGET" ] ; then
curl https://dl.sandstorm.io/${PACKAGE_FILENAME} > "$CACHE_TARGET"
fi
# Extract to /opt
tar xf "$CACHE_TARGET"
# Create symlink so we can rely on the path /opt/meteor-spk
ln -s "${PACKAGE}" meteor-spk
#This will install capnp, the Cap’n Proto command-line tool.
#It will also install libcapnp, libcapnpc, and libkj in /usr/local/lib and headers in /usr/local/include/capnp and /usr/local/include/kj.
curl -O https://capnproto.org/capnproto-c++-0.6.1.tar.gz
tar zxf capnproto-c++-0.6.1.tar.gz
cd capnproto-c++-0.6.1
./configure
make -j6 check
sudo make install
# inlcude libcapnp and libkj library to dependencies.
cp .libs/* /opt/meteor-spk/meteor-spk.deps/lib/x86_64-linux-gnu/
# Add bash, and its dependencies, so they get mapped into the image.
# Bash runs the launcher script.
cp -a /bin/bash /opt/meteor-spk/meteor-spk.deps/bin/
cp -a /lib/x86_64-linux-gnu/libncurses.so.* /opt/meteor-spk/meteor-spk.deps/lib/x86_64-linux-gnu/
cp -a /lib/x86_64-linux-gnu/libtinfo.so.* /opt/meteor-spk/meteor-spk.deps/lib/x86_64-linux-gnu/
# for npm in package.json sharp.
cp -a /lib/x86_64-linux-gnu/libresolv* /opt/meteor-spk/meteor-spk.deps/lib/x86_64-linux-gnu/
# Unfortunately, Meteor does not explicitly make it easy to cache packages, but
# we know experimentally that the package is mostly directly extractable to a
# user's $HOME/.meteor directory.
METEOR_RELEASE=1.6.1.1
METEOR_PLATFORM=os.linux.x86_64
METEOR_TARBALL_FILENAME="meteor-bootstrap-${METEOR_PLATFORM}.tar.gz"
METEOR_TARBALL_URL="https://d3sqy0vbqsdhku.cloudfront.net/packages-bootstrap/${METEOR_RELEASE}/${METEOR_TARBALL_FILENAME}"
METEOR_CACHE_TARGET="/host-dot-sandstorm/caches/${METEOR_TARBALL_FILENAME}"
# Fetch meteor tarball if not cached
if [ ! -f "$METEOR_CACHE_TARGET" ] ; then
curl "$METEOR_TARBALL_URL" > "${METEOR_CACHE_TARGET}.partial"
mv "${METEOR_CACHE_TARGET}"{.partial,}
fi
# Extract as unprivileged user, which is the usual meteor setup
cd /home/vagrant/
su -c "tar xf '${METEOR_CACHE_TARGET}'" vagrant
# Link into global PATH
ln -s /home/vagrant/.meteor/meteor /usr/bin/meteor
chown vagrant:vagrant /home/vagrant -R

@ -20,7 +20,6 @@ try {
const files = [
'./package.json',
'./.sandstorm/sandstorm-pkgdef.capnp',
'./.travis/snap.sh',
'./.circleci/snap.sh',
'./.circleci/update-releases.sh',

@ -71,7 +71,6 @@ before_deploy:
- source ".travis/setdeploydir.sh"
- ".travis/setupsig.sh"
- ".travis/namefiles.sh"
- echo ".travis/sandstorm.sh"
deploy:
- provider: s3
access_key_id: AKIAIKIA7H7D47KUHYCA

@ -1,37 +0,0 @@
#!/bin/bash
set -x
set -euvo pipefail
IFS=$'\n\t'
export SANDSTORM_VERSION=$(curl -f "https://install.sandstorm.io/dev?from=0&type=install")
export PATH=$PATH:/tmp/sandstorm-$SANDSTORM_VERSION/bin
cd /tmp
curl https://dl.sandstorm.io/sandstorm-$SANDSTORM_VERSION.tar.xz | tar -xJf -
mkdir -p ~/opt
cd ~/opt
curl https://dl.sandstorm.io/meteor-spk-0.1.8.tar.xz | tar -xJf -
ln -s meteor-spk-0.1.8 meteor-spk
cp -a /bin/bash ~/opt/meteor-spk/meteor-spk.deps/bin/
cp -a /lib/x86_64-linux-gnu/libncurses.so.* ~/opt/meteor-spk/meteor-spk.deps/lib/x86_64-linux-gnu/
cp -a /lib/x86_64-linux-gnu/libtinfo.so.* ~/opt/meteor-spk/meteor-spk.deps/lib/x86_64-linux-gnu/
ln -s $TRAVIS_BUILD_DIR ~/opt/app
cd /tmp
spk init -p3000 -- nothing
export SANDSTORM_ID="$(grep '\sid =' sandstorm-pkgdef.capnp)"
cd $TRAVIS_BUILD_DIR
export METEOR_WAREHOUSE_DIR="${METEOR_WAREHOUSE_DIR:-$HOME/.meteor}"
export METEOR_DEV_BUNDLE=$(dirname $(readlink -f "$METEOR_WAREHOUSE_DIR/meteor"))/dev_bundle
mkdir -p ~/vagrant
tar -zxf /tmp/build/Rocket.Chat.tar.gz --directory ~/vagrant/
cd ~/vagrant/bundle/programs/server && "$METEOR_DEV_BUNDLE/bin/npm" install
cd $TRAVIS_BUILD_DIR/.sandstorm
sed -i "s/\sid = .*/$SANDSTORM_ID/" sandstorm-pkgdef.capnp
mkdir -p ~/vagrant/bundle/opt/app/.sandstorm/
cp ~/opt/app/.sandstorm/launcher.sh ~/vagrant/bundle/opt/app/.sandstorm/
sed -i "s/\spgp/#pgp/g" sandstorm-pkgdef.capnp
spk pack $ROCKET_DEPLOY_DIR/rocket.chat-$ARTIFACT_NAME.spk

@ -21,7 +21,6 @@
* [Snaps](#instant-server-installation-with-snaps)
* [RocketChatLauncher](#rocketchatlauncher)
* [Layershift](#layershift)
* [Sandstorm.io](#sandstormio)
* [Yunohost.org](#yunohostorg)
* [DPlatform](#dplatform)
* [IndieHosters](#indiehosters)
@ -124,11 +123,6 @@ Instantly deploy your Rocket.Chat server for free on next generation auto-scalin
Painless SSL. Automatically scale your server cluster based on usage demand.
## Sandstorm.io
Host your own Rocket.Chat server in four seconds flat.
[![Rocket.Chat on Sandstorm.io](https://raw.githubusercontent.com/Sing-Li/bbug/master/images/sandstorm.jpg)](https://apps.sandstorm.io/app/vfnwptfn02ty21w715snyyczw0nqxkv3jvawcah10c6z7hj1hnu0)
## Yunohost.org
Host your own Rocket.Chat server in a few seconds.
@ -320,7 +314,6 @@ It is a great solution for communities and companies wanting to privately host t
- Native Cross-Platform Desktop Application [Windows, macOS, or Linux](https://rocket.chat/)
- Mobile app for iPhone, iPad, and iPod touch [Download on App Store](https://geo.itunes.apple.com/us/app/rocket-chat/id1148741252?mt=8)
- Mobile app for Android phone, tablet, and TV stick [Available now on Google Play](https://play.google.com/store/apps/details?id=chat.rocket.android)
- Sandstorm.io instant Rocket.Chat server [Now on Sandstorm App Store](https://apps.sandstorm.io/app/vfnwptfn02ty21w715snyyczw0nqxkv3jvawcah10c6z7hj1hnu0)
- Available on [Cloudron Store](https://cloudron.io/appstore.html#chat.rocket.cloudronapp)
## Roadmap

@ -1,4 +1,3 @@
import { Meteor } from 'meteor/meteor';
import { WebApp } from 'meteor/webapp';
import { Uploads } from '../../../models';
import { FileUpload } from './FileUpload';
@ -11,7 +10,7 @@ WebApp.connectHandlers.use('/file-upload/', function(req, res, next) {
const file = Uploads.findOneById(match[1]);
if (file) {
if (!Meteor.settings.public.sandstorm && !FileUpload.requestCanAccessFiles(req)) {
if (!FileUpload.requestCanAccessFiles(req)) {
res.writeHead(403);
return res.end();
}

@ -11,7 +11,7 @@ Meteor.startup(function() {
if (!siteUrl || (Meteor.userId() == null)) {
return;
}
if (hasRole(Meteor.userId(), 'admin') === false || Meteor.settings.public.sandstorm) {
if (hasRole(Meteor.userId(), 'admin') === false) {
return c.stop();
}
Meteor.setTimeout(function() {

@ -1,4 +1,3 @@
import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check';
import { HTTP } from 'meteor/http';
import { Gravatar } from 'meteor/jparker:gravatar';
@ -51,13 +50,6 @@ export function getAvatarSuggestionForUser(user) {
});
}
if (user.services.sandstorm && user.services.sandstorm.picture && Meteor.settings.public.sandstorm) {
avatars.push({
service: 'sandstorm',
url: user.services.sandstorm.picture,
});
}
if (user.services.blockstack && user.services.blockstack.image && settings.get('Blockstack_Enable')) {
avatars.push({
service: 'blockstack',

@ -1,5 +1,4 @@
import limax from 'limax';
import { Meteor } from 'meteor/meteor';
import { Users } from '../../../models';
import { settings } from '../../../settings';
@ -25,10 +24,6 @@ const name = (username) => (settings.get('UTF8_Names_Slugify') ? slug(username)
export function generateUsernameSuggestion(user) {
let usernames = [];
if (Meteor.settings.public.sandstorm) {
usernames.push(user.services.sandstorm.preferredHandle);
}
if (user.name) {
usernames.push(name(user.name));

@ -127,13 +127,6 @@ export const insertMessage = function(user, message, room, upsert = false) {
delete message.tokens;
}
// Avoid saving sandstormSessionId to the database
let sandstormSessionId = null;
if (message.sandstormSessionId) {
sandstormSessionId = message.sandstormSessionId;
delete message.sandstormSessionId;
}
if (message._id && upsert) {
const { _id } = message;
delete message._id;
@ -146,6 +139,5 @@ export const insertMessage = function(user, message, room, upsert = false) {
message._id = Messages.insert(message);
}
message.sandstormSessionId = sandstormSessionId;
return message;
};

@ -163,13 +163,6 @@ export const sendMessage = function(user, message, room, upsert = false) {
message = callbacks.run('beforeSaveMessage', message, room);
if (message) {
// Avoid saving sandstormSessionId to the database
let sandstormSessionId = null;
if (message.sandstormSessionId) {
sandstormSessionId = message.sandstormSessionId;
delete message.sandstormSessionId;
}
if (message._id && upsert) {
const { _id } = message;
delete message._id;
@ -191,11 +184,8 @@ export const sendMessage = function(user, message, room, upsert = false) {
/*
Defer other updates as their return is not interesting to the user
*/
Meteor.defer(() => {
// Execute all callbacks
message.sandstormSessionId = sandstormSessionId;
return callbacks.run('afterSaveMessage', message, room, user._id);
});
Meteor.defer(() => callbacks.run('afterSaveMessage', message, room, user._id));
return message;
}
};

@ -5,7 +5,6 @@ import { settings } from '../../../settings';
import { callbacks } from '../../../callbacks';
import { Subscriptions } from '../../../models';
import { roomTypes } from '../../../utils';
import { Sandstorm } from '../../../sandstorm';
import { callJoinRoom, messageContainsHighlight, parseMessageTextPerUser, replaceMentionedUsernamesWithFullNames } from '../functions/notifications/';
import { sendEmail, shouldNotifyEmail } from '../functions/notifications/email';
import { sendSinglePush, shouldNotifyMobile } from '../functions/notifications/mobile';
@ -55,8 +54,6 @@ const sendNotification = async({
emailNotifications,
} = subscription;
let notificationSent = false;
// busy users don't receive audio notification
if (shouldNotifyAudio({
disableAllMessageNotifications,
@ -84,7 +81,6 @@ const sendNotification = async({
hasMentionToUser,
roomType,
})) {
notificationSent = true;
notifyDesktopUser({
notificationMessage,
userId: subscription.u._id,
@ -104,8 +100,6 @@ const sendNotification = async({
statusConnection: receiver.statusConnection,
roomType,
})) {
notificationSent = true;
sendSinglePush({
notificationMessage,
room,
@ -135,10 +129,6 @@ const sendNotification = async({
return false;
});
}
if (notificationSent) {
Sandstorm.notify(message, [subscription.u._id], `@${ sender.username }: ${ message.msg }`, room.t === 'p' ? 'privateMessage' : 'message');
}
};
const project = {

@ -88,10 +88,6 @@ Meteor.methods({
message.alias = user.name;
}
if (Meteor.settings.public.sandstorm) {
message.sandstormSessionId = this.connection.sandstormSessionId();
}
metrics.messagesSent.inc(); // TODO This line needs to be moved to it's proper place. See the comments on: https://github.com/RocketChat/Rocket.Chat/pull/5736
return sendMessage(user, message, room);
},

@ -22,9 +22,6 @@ Template.oembedBaseWidget.helpers({
if (this.meta && this.meta.oembedHtml) {
return 'oembedFrameWidget';
}
if (this.meta && this.meta.sandstorm && this.meta.sandstorm.grain) {
return 'oembedSandstormGrain';
}
return 'oembedUrlWidget';
},
});

@ -12,5 +12,3 @@ import './oembedUrlWidget.html';
import './oembedUrlWidget';
import './oembedFrameWidget.html';
import './oembedFrameWidget';
import './oembedSandstormGrain.html';
import './oembedSandstormGrain';

@ -1,11 +0,0 @@
<template name="oembedSandstormGrain">
<blockquote class="sandstorm-grain background-transparent-darker-before">
<label>
<button onclick="sandstormOembed(event)" data-token="{{token}}"
data-descriptor="{{descriptor}}">
{{grainTitle}}
</button>
<img src="{{appIconUrl}}" />
</label>
</blockquote>
</template>

@ -1,28 +0,0 @@
import { Meteor } from 'meteor/meteor';
import { Template } from 'meteor/templating';
Template.oembedSandstormGrain.helpers({
token() {
return this.meta.sandstorm.grain.token;
},
appTitle() {
return this.meta.sandstorm.grain.appTitle.defaultText;
},
grainTitle() {
return this.meta.sandstorm.grain.grainTitle;
},
appIconUrl() {
return this.meta.sandstorm.grain.appIconUrl;
},
descriptor() {
return this.meta.sandstorm.grain.descriptor;
},
});
window.sandstormOembed = function(e) {
e = e || window.event;
const src = e.target || e.srcElement;
const token = src.getAttribute('data-token');
const descriptor = src.getAttribute('data-descriptor');
return Meteor.call('sandstormOffer', token, descriptor);
};

@ -254,15 +254,6 @@ OEmbed.rocketUrlParser = function(message) {
if (item.ignoreParse === true) {
return;
}
if (item.url.startsWith('grain://')) {
changed = true;
item.meta = {
sandstorm: {
grain: item.sandstormViewInfo,
},
};
return;
}
if (!/^https?:\/\//i.test(item.url)) {
return;
}

@ -1,6 +0,0 @@
import { Sandstorm } from './powerboxListener';
import './setPath';
export {
Sandstorm,
};

@ -1,30 +0,0 @@
import { Meteor } from 'meteor/meteor';
export const Sandstorm = {};
Sandstorm.request = function() {};
if (Meteor.settings.public.sandstorm) {
const callbackMap = {};
const messageListener = function(event) {
if (event.data.rpcId) {
const cb = callbackMap[event.data.rpcId];
cb(event.data.error, event.data);
}
};
window.addEventListener('message', messageListener);
const interfaces = {
uiView: 'EAZQAQEAABEBF1EEAQH_5-Jn6pjXtNsAAAA',
};
Sandstorm.request = function(interfaceName, cb) {
const rpcId = Math.random().toString();
callbackMap[rpcId] = cb;
window.parent.postMessage({ powerboxRequest: {
rpcId,
query: [interfaces[interfaceName]],
} }, '*');
};
}

@ -1,15 +0,0 @@
import { Meteor } from 'meteor/meteor';
import { FlowRouter } from 'meteor/kadira:flow-router';
function updateSandstormMetaData(msg) {
return window.parent.postMessage(msg, '*');
}
if (Meteor.settings.public.sandstorm) {
// Set the path of the parent frame when the grain's path changes.
// See https://docs.sandstorm.io/en/latest/developing/path/
FlowRouter.triggers.enter([({ path }) => {
updateSandstormMetaData({ setPath: path });
}]);
}

@ -1,8 +0,0 @@
import { Meteor } from 'meteor/meteor';
if (Meteor.isClient) {
module.exports = require('./client/index.js');
}
if (Meteor.isServer) {
module.exports = require('./server/index.js');
}

@ -1,42 +0,0 @@
import { Meteor } from 'meteor/meteor';
import { getHttpBridge, waitPromise } from './lib';
import { Sandstorm } from './lib';
import _ from 'underscore';
Sandstorm.notify = function() {};
if (process.env.SANDSTORM === '1') {
const ACTIVITY_TYPES = {
message: 0,
privateMessage: 1,
};
Sandstorm.notify = function(message, userIds, caption, type) {
const sessionId = message.sandstormSessionId;
if (!sessionId) {
return;
}
const httpBridge = getHttpBridge();
const activity = {};
if (type) {
activity.type = ACTIVITY_TYPES[type];
}
if (caption) {
activity.notification = { caption: { defaultText: caption } };
}
if (userIds) {
activity.users = _.map(userIds, function(userId) {
const user = Meteor.users.findOne({ _id: userId }, { fields: { 'services.sandstorm.id': 1 } });
return {
identity: waitPromise(httpBridge.getSavedIdentity(user.services.sandstorm.id)).identity,
mentioned: true,
};
});
}
return waitPromise(httpBridge.getSessionContext(sessionId).context.activity(activity));
};
}

@ -1,7 +0,0 @@
import { Sandstorm } from './lib';
import './events';
import './powerbox';
export {
Sandstorm,
};

@ -1,39 +0,0 @@
import Future from 'fibers/future';
import { UploadFS } from 'meteor/jalik:ufs';
export const Sandstorm = {};
export let getHttpBridge;
export let waitPromise;
if (process.env.SANDSTORM === '1') {
const Capnp = require('capnp');
const { SandstormHttpBridge } = Capnp.importSystem('sandstorm/sandstorm-http-bridge.capnp');
let capnpConnection = null;
let httpBridge = null;
getHttpBridge = function() {
if (!httpBridge) {
capnpConnection = Capnp.connect('unix:/tmp/sandstorm-api');
httpBridge = capnpConnection.restore(null, SandstormHttpBridge);
}
return httpBridge;
};
const promiseToFuture = function(promise) {
const result = new Future();
promise.then(result.return.bind(result), result.throw.bind(result));
return result;
};
waitPromise = function(promise) {
return promiseToFuture(promise).wait();
};
// This usual implementation of this method returns an absolute URL that is invalid
// under Sandstorm.
UploadFS.Store.prototype.getURL = function(path) {
return this.getRelativeURL(path);
};
}

@ -1,50 +0,0 @@
import { Meteor } from 'meteor/meteor';
import { Sandstorm } from './lib';
import { getHttpBridge, waitPromise } from './lib';
Sandstorm.offerUiView = function() {};
if (process.env.SANDSTORM === '1') {
const Capnp = require('capnp');
const Powerbox = Capnp.importSystem('sandstorm/powerbox.capnp');
const Grain = Capnp.importSystem('sandstorm/grain.capnp');
Sandstorm.offerUiView = function(token, serializedDescriptor, sessionId) {
const httpBridge = getHttpBridge();
const session = httpBridge.getSessionContext(sessionId).context;
const { api } = httpBridge.getSandstormApi(sessionId);
const { cap } = waitPromise(api.restore(new Buffer(token, 'base64')));
return waitPromise(session.offer(cap, undefined, { tags: [{
id: '15831515641881813735',
value: new Buffer(serializedDescriptor, 'base64'),
}] }));
};
Meteor.methods({
sandstormClaimRequest(token, serializedDescriptor) {
const descriptor = Capnp.parsePacked(Powerbox.PowerboxDescriptor, new Buffer(serializedDescriptor, 'base64'));
const grainTitle = Capnp.parse(Grain.UiView.PowerboxTag, descriptor.tags[0].value).title;
const sessionId = this.connection.sandstormSessionId();
const httpBridge = getHttpBridge();
const session = httpBridge.getSessionContext(sessionId).context;
const cap = waitPromise(session.claimRequest(token)).cap.castAs(Grain.UiView);
const { api } = httpBridge.getSandstormApi(sessionId);
const newToken = waitPromise(api.save(cap)).token.toString('base64');
const viewInfo = waitPromise(cap.getViewInfo());
const { appTitle } = viewInfo;
const asset = waitPromise(viewInfo.grainIcon.getUrl());
const appIconUrl = `${ asset.protocol }://${ asset.hostPath }`;
return {
token: newToken,
appTitle,
appIconUrl,
grainTitle,
descriptor: descriptor.tags[0].value.toString('base64'),
};
},
sandstormOffer(token, serializedDescriptor) {
Sandstorm.offerUiView(token, serializedDescriptor,
this.connection.sandstormSessionId());
},
});
}

@ -19,7 +19,7 @@ const closetd = '</td>';
function _getLink(attachment) {
const url = attachment.title_link.replace(/ /g, '%20');
if (Meteor.settings.public.sandstorm || url.match(/^(https?:)?\/\//i)) {
if (url.match(/^(https?:)?\/\//i)) {
return url;
} else {
return Meteor.absoluteUrl().replace(/\/$/, '') + __meteor_runtime_config__.ROOT_URL_PATH_PREFIX + url;

@ -2943,20 +2943,6 @@ rc-old select,
line-height: 1em;
}
& blockquote.sandstorm-grain {
& img {
width: 50px;
}
& label {
cursor: pointer;
}
& button {
display: block;
}
}
& ul,
& ol {
padding: 0 0 0 24px;

@ -1,9 +1,4 @@
<template name="loginForm">
{{#if state 'sandstorm'}}
<div class="alert error-color error-background error-border">
You must login to Sandstorm (on the top right) in order to access this chat.
</div>
{{else}}
<form id="login-card" class="content-background-color color-primary-font-color" method='/' novalidate>
{{#if state 'wait-activation'}}
<header>
@ -152,5 +147,4 @@
Powered by <a class="color-tertiary-font-color" href="https://rocket.chat">Open Source Chat Platform Rocket.Chat</a>.
</div>
</div>
{{/if}}
</template>

@ -183,9 +183,7 @@ Template.loginForm.onCreated(function() {
return this.customFields.set(null);
}
});
if (Meteor.settings.public.sandstorm) {
this.state = new ReactiveVar('sandstorm');
} else if (Session.get('loginDefaultState')) {
if (Session.get('loginDefaultState')) {
this.state = new ReactiveVar(Session.get('loginDefaultState'));
} else {
this.state = new ReactiveVar('login');

@ -19,7 +19,7 @@ export const KonchatNotification = {
// notificacoes HTML5
getDesktopPermission() {
if (window.Notification && (Notification.permission !== 'granted') && !Meteor.settings.public.sandstorm) {
if (window.Notification && (Notification.permission !== 'granted')) {
return Notification.requestPermission(function(status) {
KonchatNotification.notificationStatus.set(status);
if (Notification.permission !== status) {
@ -79,7 +79,7 @@ export const KonchatNotification = {
return;
}
if ((Meteor.user().status === 'busy') || (Meteor.settings.public.sandstorm != null)) {
if (Meteor.user().status === 'busy') {
return;
}

@ -54,7 +54,6 @@ import '../app/oembed';
import '../app/otr';
import '../app/push-notifications';
import '../app/apps';
import '../app/sandstorm';
import '../app/setup-wizard';
import '../app/slackbridge';
import '../app/slashcommands-archiveroom';

@ -242,7 +242,6 @@
"houston": {
"updateFiles": [
"package.json",
".sandstorm/sandstorm-pkgdef.capnp",
".travis/snap.sh",
".circleci/snap.sh",
".circleci/update-releases.sh",

@ -2220,7 +2220,6 @@
"SAML_Custom_Private_Key": "Privaat Sleutel Inhoud",
"SAML_Custom_Provider": "Aangepaste Verskaffer",
"SAML_Custom_Public_Cert": "Publieke Sertifisering",
"Sandstorm_Powerbox_Share": "Deel 'n Sandstorm graan",
"Saturday": "Saterdag",
"Save": "Save",
"save-others-livechat-room-info": "Stoor ander Livechat-kamerinligting",

@ -2220,7 +2220,6 @@
"SAML_Custom_Private_Key": "محتويات المفتاح الخاص",
"SAML_Custom_Provider": "مزود مخصص",
"SAML_Custom_Public_Cert": "محتويات الشهادة العامة",
"Sandstorm_Powerbox_Share": "مشاركة عاصفة رملية",
"Saturday": "السبت",
"Save": "حفظ",
"save-others-livechat-room-info": "حفظ معلومات غرف الدردشة المباشرة الأخرى",

@ -2220,7 +2220,6 @@
"SAML_Custom_Private_Key": "Şəxsi Açar İçindəkilər",
"SAML_Custom_Provider": "Xüsusi təchizatçı",
"SAML_Custom_Public_Cert": "İctimai Cert Contents",
"Sandstorm_Powerbox_Share": "Sandstorm taxıl paylaşın",
"Saturday": "Şənbə",
"Save": "Yadda saxla",
"save-others-livechat-room-info": "Digərləri Saxla",

@ -2237,7 +2237,6 @@
"SAML_Custom_Private_Key": "Private Key Змест",
"SAML_Custom_Provider": "прыстасаваныя Provider",
"SAML_Custom_Public_Cert": "Грамадскія Змест Cert",
"Sandstorm_Powerbox_Share": "Дайце Sandstorm зерне",
"Saturday": "субота",
"Save": "захаваць",
"save-others-livechat-room-info": "Захаваць Іншая Livechat нумар Інфармацыя",

@ -2220,7 +2220,6 @@
"SAML_Custom_Private_Key": "Съдържание на частния ключ",
"SAML_Custom_Provider": "Потребителски доставчик",
"SAML_Custom_Public_Cert": "Публично съдържание",
"Sandstorm_Powerbox_Share": "Споделете пясъчна змия",
"Saturday": "събота",
"Save": "Запази",
"save-others-livechat-room-info": "Запазване на други данни за стая в Livechat",

@ -2218,7 +2218,6 @@
"SAML_Custom_Private_Key": "Sadržaj privatnog ključa",
"SAML_Custom_Provider": "Prilagođeni Provider",
"SAML_Custom_Public_Cert": "Sadržaj javnog cert",
"Sandstorm_Powerbox_Share": "Podijeli Sandstorm grain",
"Saturday": "Subota",
"Save": "Spremi",
"save-others-livechat-room-info": "Spremi druge informacije Livechat Room",

@ -2219,7 +2219,6 @@
"SAML_Custom_Private_Key": "Contingut de la clau privada",
"SAML_Custom_Provider": "Proveïdor (provider) personalitzat",
"SAML_Custom_Public_Cert": "Contingut del certificat públic",
"Sandstorm_Powerbox_Share": "Comparteix un gra de Sandstorm",
"Saturday": "dissabte",
"Save": "Desa",
"save-others-livechat-room-info": "Guardar info altres xats en viu",

@ -2224,7 +2224,6 @@
"SAML_Custom_Private_Key": "Obsah privátního klíče",
"SAML_Custom_Provider": "Vlastní poskytovatel",
"SAML_Custom_Public_Cert": "Obsah veřejného certifikátu",
"Sandstorm_Powerbox_Share": "Sdílet Sandstorm grain",
"Saturday": "Sobota",
"Save": "Uložit",
"save-others-livechat-room-info": "Upravit informace LiveChat místnosti",

@ -2219,7 +2219,6 @@
"SAML_Custom_Private_Key": "Cynnwys Allweddol Preifat",
"SAML_Custom_Provider": "Darparwr Arfaethedig",
"SAML_Custom_Public_Cert": "Cynnwys Tystysgrif Gyhoeddus",
"Sandstorm_Powerbox_Share": "Rhannwch grawn Sandstorm",
"Saturday": "Sadwrn",
"Save": "Arbed",
"save-others-livechat-room-info": "Cadw Gwybodaeth Ystafelloedd Livechat Eraill",

@ -2338,7 +2338,6 @@
"SAML_Custom_Private_Key": "Privat nøgleindhold",
"SAML_Custom_Provider": "Tilpasset udbyder",
"SAML_Custom_Public_Cert": "Offentligt certificeret indhold",
"Sandstorm_Powerbox_Share": "Del en Sandstorm korn",
"Saturday": "lørdag",
"Save": "Gem",
"save-others-livechat-room-info": "Gem andre Livechat Room Info",

@ -2221,7 +2221,6 @@
"SAML_Custom_Private_Key": "Privater Schlüssel Inhalt",
"SAML_Custom_Provider": "Benutzerdefinierter Provider",
"SAML_Custom_Public_Cert": "Öffentliche Cert-Inhalte",
"Sandstorm_Powerbox_Share": "Teile ein Sandsturmkorn",
"Saturday": "Samstag",
"Save": "Speichern",
"save-others-livechat-room-info": "Rette andere Livechat Zimmer Info",

@ -2243,7 +2243,6 @@
"SAML_Custom_Provider": "Benutzerdefinierter Provider",
"SAML_Custom_Public_Cert": "Öffentliches Zertifikat",
"SAML": "SAML",
"Sandstorm_Powerbox_Share": "Als Sandstorm Grain teilen",
"Saturday": "Samstag",
"Save_changes": "Änderungen speichern",
"Save_Mobile_Bandwidth": "Mobiles Datenvolumen sparen",

@ -2429,7 +2429,6 @@
"SAML_Custom_Private_Key": "Privater Schlüssel",
"SAML_Custom_Provider": "Benutzerdefinierter Provider",
"SAML_Custom_Public_Cert": "Öffentliches Zertifikat",
"Sandstorm_Powerbox_Share": "Als Sandstorm Grain teilen",
"Saturday": "Samstag",
"Save": "Speichern",
"save-others-livechat-room-info": "Livechat-Informationen anderer Chats speichern",

@ -2220,7 +2220,6 @@
"SAML_Custom_Private_Key": "Περιεχόμενα ιδιωτικού κλειδιού",
"SAML_Custom_Provider": "Προσαρμοσμένη Provider",
"SAML_Custom_Public_Cert": "Δημόσια Περιεχόμενο Cert",
"Sandstorm_Powerbox_Share": "Μοιραστείτε ένα αμμοθύελλα",
"Saturday": "Σάββατο",
"Save": "Αποθήκευση",
"save-others-livechat-room-info": "Αποθήκευση άλλων πληροφοριών δωματίων Livechat",

@ -2473,7 +2473,6 @@
"SAML_Custom_Private_Key": "Private Key Contents",
"SAML_Custom_Provider": "Custom Provider",
"SAML_Custom_Public_Cert": "Public Cert Contents",
"Sandstorm_Powerbox_Share": "Share a Sandstorm grain",
"Saturday": "Saturday",
"Save": "Save",
"save-others-livechat-room-info": "Save Others Livechat Room Info",

@ -2220,7 +2220,6 @@
"SAML_Custom_Private_Key": "Privata Ŝlosila Enhavo",
"SAML_Custom_Provider": "Propra Provizanto",
"SAML_Custom_Public_Cert": "Publika Certa Enhavo",
"Sandstorm_Powerbox_Share": "Konigi Sandstorm-grajnon",
"Saturday": "Sabato",
"Save": "Savi",
"save-others-livechat-room-info": "Konservu aliajn salutnajn ĉambrojn",

@ -2233,7 +2233,6 @@
"SAML_Custom_Private_Key": "Contenido de clave privada",
"SAML_Custom_Provider": "Proveedor Personalizado",
"SAML_Custom_Public_Cert": "Contenido del certificado público",
"Sandstorm_Powerbox_Share": "Comparte un grano Sandstorm",
"Saturday": "Sábado",
"Save": "Guardar",
"save-others-livechat-room-info": "Guardar otros Livechat Información de la habitación",

@ -2227,7 +2227,6 @@
"SAML_Custom_Private_Key": "محتویات کلید خصوصی",
"SAML_Custom_Provider": "ارائه دهنده سفارشی",
"SAML_Custom_Public_Cert": "مطالب عمومی Cert",
"Sandstorm_Powerbox_Share": "دانه شن و ماسه را به اشتراک بگذارید",
"Saturday": "شنبه",
"Save": "ذخیره",
"save-others-livechat-room-info": "سایر اطلاعات Livechat را ذخیره کنید",

@ -2220,7 +2220,6 @@
"SAML_Custom_Private_Key": "Yksityisen avaimen sisältö",
"SAML_Custom_Provider": "Custom Provider",
"SAML_Custom_Public_Cert": "Julkisen sisällön sisältö",
"Sandstorm_Powerbox_Share": "Jaa hiekkamyrsky",
"Saturday": "Lauantai",
"Save": "Tallenna",
"save-others-livechat-room-info": "Tallenna muut Livechat-huoneilmoitukset",

@ -2221,7 +2221,6 @@
"SAML_Custom_Private_Key": "Contenu de la clé privée",
"SAML_Custom_Provider": "Fournisseur personnalisé",
"SAML_Custom_Public_Cert": "Contenu du certificat public",
"Sandstorm_Powerbox_Share": "Partager une graine Sandstorm",
"Saturday": "Samedi",
"Save": "Enregistrer",
"save-others-livechat-room-info": "Enregistrer les autres Livechat Room Info",

@ -2220,7 +2220,6 @@
"SAML_Custom_Private_Key": "Sadržaj privatnog ključa",
"SAML_Custom_Provider": "Prilagođeni Provider",
"SAML_Custom_Public_Cert": "Sadržaj javnog cert",
"Sandstorm_Powerbox_Share": "Podijeli Sandstorm grain",
"Saturday": "Subota",
"Save": "Spremi",
"save-others-livechat-room-info": "Spremi druge informacije Livechat Room",

@ -2220,7 +2220,6 @@
"SAML_Custom_Private_Key": "Privát kulcs tartalma",
"SAML_Custom_Provider": "Egyedi Szolgáltató",
"SAML_Custom_Public_Cert": "Nyilvános Cert tartalom",
"Sandstorm_Powerbox_Share": "Ossza meg a homokviharot",
"Saturday": "szombat",
"Save": "Mentés",
"save-others-livechat-room-info": "Mások mentése a Livechat szobapiacon",

@ -2220,7 +2220,6 @@
"SAML_Custom_Private_Key": "Isi Kunci Pribadi",
"SAML_Custom_Provider": "Custom Provider",
"SAML_Custom_Public_Cert": "Isi Cert Publik",
"Sandstorm_Powerbox_Share": "Bagikan butiran pasir pasir",
"Saturday": "Sabtu",
"Save": "Simpan",
"save-others-livechat-room-info": "Simpan Informasi Kamar Livechat Lainnya",

@ -2211,7 +2211,6 @@
"SAML_Custom_Private_Key": "Contenuto chiave privata",
"SAML_Custom_Provider": "Custom Provider",
"SAML_Custom_Public_Cert": "Public cert contents",
"Sandstorm_Powerbox_Share": "Condividi un Sandstorm grain",
"Saturday": "Sabato",
"Save": "Salva",
"save-others-livechat-room-info": "Salva gli altri Livechat Room Info",

@ -2448,7 +2448,6 @@
"SAML_Custom_Private_Key": "秘密鍵の内容",
"SAML_Custom_Provider": "カスタム プロバイダー",
"SAML_Custom_Public_Cert": "公開証明書の内容",
"Sandstorm_Powerbox_Share": "砂嵐の穀物を共有する",
"Saturday": "土曜日",
"Save": "保存",
"save-others-livechat-room-info": "ライブチャットルーム情報",

@ -2373,7 +2373,6 @@
"SAML_Custom_Private_Key": "មនសឯកជន",
"SAML_Custom_Provider": "កមហនផដលន",
"SAML_Custom_Public_Cert": "មរណរណ",
"Sandstorm_Powerbox_Share": "ចករកគធញញជ Sandstorm មយ",
"Saturday": "ថ",
"Save": "រកក",
"save-others-livechat-room-info": "រកកពនផងទតរបស Livechat បនទប",

@ -2363,7 +2363,6 @@
"SAML_Custom_Private_Key": "사용자 정의 개인 키",
"SAML_Custom_Provider": "사용자 정의 제공자",
"SAML_Custom_Public_Cert": "사용자 정의 공개 인증서",
"Sandstorm_Powerbox_Share": "Sandstorm Powerbox 공유",
"Saturday": "토요일",
"Save": "저장",
"save-others-livechat-room-info": "다른 사용자의 Livechat 대화방 정보 저장",

@ -2219,7 +2219,6 @@
"SAML_Custom_Private_Key": "Contains Key Keys",
"SAML_Custom_Provider": "Provider Custom",
"SAML_Custom_Public_Cert": "Contents of Certificate of Public",
"Sandstorm_Powerbox_Share": "Share a Sandstorm",
"Saturday": "Şemî",
"Save": "پاشەکەوت",
"save-others-livechat-room-info": "Hinek Dinştin Kûrek Kişandin Livechat",

@ -2220,7 +2220,6 @@
"SAML_Custom_Private_Key": "ເນອຫາທາຄນຂອງເອກະຊນ",
"SAML_Custom_Provider": "ຜໃຫການລກຄາ",
"SAML_Custom_Public_Cert": "Contents Public Cert",
"Sandstorm_Powerbox_Share": "ແບງປນເມດ Sandstorm",
"Saturday": "ວນເສາ",
"Save": "ບນທກ",
"save-others-livechat-room-info": "ບນທກຂນອນ ໆ Livechat Room Info",

@ -2220,7 +2220,6 @@
"SAML_Custom_Private_Key": "Privataus raktų turinys",
"SAML_Custom_Provider": "Tinkintas teikėjas",
"SAML_Custom_Public_Cert": "Viešojo rašto turinys",
"Sandstorm_Powerbox_Share": "Pasidalykite smėlio akmens grūdais",
"Saturday": "Šeštadienis",
"Save": "Sutaupyti",
"save-others-livechat-room-info": "Išsaugokite kitus \"Livechat\" kambario duomenis",

@ -2219,7 +2219,6 @@
"SAML_Custom_Private_Key": "Privātās atslēgas saturs",
"SAML_Custom_Provider": "Pielāgots pakalpojuma sniedzējs",
"SAML_Custom_Public_Cert": "Publiskā sertifikāta saturs",
"Sandstorm_Powerbox_Share": "Dalies ar Sandstorm grain",
"Saturday": "Sestdiena",
"Save": "Saglabāt",
"save-others-livechat-room-info": "Saglabāt citiem Livechat istabas informāciju",

@ -2220,7 +2220,6 @@
"SAML_Custom_Private_Key": "Хувийн түлхүүр агуулга",
"SAML_Custom_Provider": "Гаалийн байгууллага",
"SAML_Custom_Public_Cert": "Нийтийн гэрчилгээний агуулга",
"Sandstorm_Powerbox_Share": "Элс элсний үрийг хуваалц",
"Saturday": "Бямба",
"Save": "Хадгалах",
"save-others-livechat-room-info": "Бусад Livechat Өрөөний мэдээллийг ав",

@ -2220,7 +2220,6 @@
"SAML_Custom_Private_Key": "Kandungan Utama Peribadi",
"SAML_Custom_Provider": "Pembekal Custom",
"SAML_Custom_Public_Cert": "Kandungan Sijil Awam",
"Sandstorm_Powerbox_Share": "Berkongsi gandum pasir",
"Saturday": "Sabtu",
"Save": "Simpan",
"save-others-livechat-room-info": "Simpan Lain-lain Maklumat Bilik Livechat",

@ -2323,7 +2323,6 @@
"SAML_Custom_Private_Key": "Private Key Inhoud",
"SAML_Custom_Provider": "Custom Provider",
"SAML_Custom_Public_Cert": "Public Cert Contents",
"Sandstorm_Powerbox_Share": "Deel een zandstormkorrel",
"Saturday": "Zaterdag",
"Save": "Bewaren",
"save-others-livechat-room-info": "Sla anderen op Livechat Room Info",

@ -2221,7 +2221,6 @@
"SAML_Custom_Private_Key": "Privat nøkkelinnhold",
"SAML_Custom_Provider": "Tilpasset leverandør",
"SAML_Custom_Public_Cert": "Offentlig sertifisering",
"Sandstorm_Powerbox_Share": "Del en sandstorm korn",
"Saturday": "lørdag",
"Save": "Lagre",
"save-others-livechat-room-info": "Lagre andre Livechat Room Info",

@ -2448,7 +2448,6 @@
"SAML_Custom_Private_Key": "Zawartość klucza prywatnego",
"SAML_Custom_Provider": "Własny dostawca (provider)",
"SAML_Custom_Public_Cert": "Public Cert Contents",
"Sandstorm_Powerbox_Share": "Udostępnij ziarno burzy piaskowej",
"Saturday": "Sobota",
"Save": "Zapisz",
"save-others-livechat-room-info": "Zapisz inne informacje o pokoju Livechat",

@ -2448,7 +2448,6 @@
"SAML_Custom_Private_Key": "Conteúdo chave privado",
"SAML_Custom_Provider": "Provedor Personalizado",
"SAML_Custom_Public_Cert": "Conteúdo do Círculo Público",
"Sandstorm_Powerbox_Share": "Compartilhe um grão de tempestade de areia",
"Saturday": "sábado",
"Save": "Salvar",
"save-others-livechat-room-info": "Salve outras informações de Sala de Livechat",

@ -2448,7 +2448,6 @@
"SAML_Custom_Private_Key": "Conteúdo chave privado",
"SAML_Custom_Provider": "Provedor Personalizado",
"SAML_Custom_Public_Cert": "Conteúdo do Círculo Público",
"Sandstorm_Powerbox_Share": "Compartilhe um grão de tempestade de areia",
"Saturday": "Sábado",
"Save": "Salvar",
"save-others-livechat-room-info": "Salve outros serviços Livechat Room",

@ -2220,7 +2220,6 @@
"SAML_Custom_Private_Key": "Conținut cheie privat",
"SAML_Custom_Provider": "Custom Provider",
"SAML_Custom_Public_Cert": "Conținut public",
"Sandstorm_Powerbox_Share": "Distribuiți o granulă de nisip",
"Saturday": "Sâmbătă",
"Save": "Salvează",
"save-others-livechat-room-info": "Salvează alte informații livechat despre cameră",

@ -2394,7 +2394,6 @@
"SAML_Custom_Private_Key": "Закрытый ключ содержит",
"SAML_Custom_Provider": "Пользовательский поставщик",
"SAML_Custom_Public_Cert": "Публичный ключ содержит",
"Sandstorm_Powerbox_Share": "Share a Sandstorm grain",
"Saturday": "Суббота",
"Save": "Сохранить",
"save-others-livechat-room-info": "Сохранить информацию о других комнатах Livechat",

@ -2219,7 +2219,6 @@
"SAML_Custom_Private_Key": "Obsah súkromného kľúča",
"SAML_Custom_Provider": "Vlastný poskytovateľ",
"SAML_Custom_Public_Cert": "Obsah verejného obsahu",
"Sandstorm_Powerbox_Share": "Zdieľajte zrno piesku",
"Saturday": "sobota",
"Save": "uložiť",
"save-others-livechat-room-info": "Uložiť ostatné Informácie o miestnosti v miestnosti Livechat",

@ -2218,7 +2218,6 @@
"SAML_Custom_Private_Key": "Vsebina zasebnega ključa",
"SAML_Custom_Provider": "Ponudnik po meri",
"SAML_Custom_Public_Cert": "Javni ključ",
"Sandstorm_Powerbox_Share": "Delite vsebino iz Sandstorma",
"Saturday": "Sobota",
"Save": "Shrani",
"save-others-livechat-room-info": "Shrani druge informacije Livechat sobe",

@ -2220,7 +2220,6 @@
"SAML_Custom_Private_Key": "Përmbajtja kryesore private",
"SAML_Custom_Provider": "Custom Provider",
"SAML_Custom_Public_Cert": "Përmbajtja e Cert Publik",
"Sandstorm_Powerbox_Share": "Ndani një kokërr Sandstorm",
"Saturday": "e shtunë",
"Save": "Ruaj",
"save-others-livechat-room-info": "Ruaj të tjerët Info Livechat Room",

@ -2220,7 +2220,6 @@
"SAML_Custom_Private_Key": "Садржај приватног кључа",
"SAML_Custom_Provider": "цустом провајдера",
"SAML_Custom_Public_Cert": "Публиц Церт Цонтентс",
"Sandstorm_Powerbox_Share": "Поделите зрну печурке",
"Saturday": "Субота",
"Save": "Сачувај",
"save-others-livechat-room-info": "Сачувај друге Ливецхат Роом Инфо",

@ -2278,7 +2278,6 @@
"SAML_Custom_Private_Key": "Privat nyckelinnehåll",
"SAML_Custom_Provider": "anpassade Provider",
"SAML_Custom_Public_Cert": "Certifikat för allmän certifiering",
"Sandstorm_Powerbox_Share": "Dela en sandstormkorn",
"Saturday": "lördag",
"Save": "Spara",
"save-others-livechat-room-info": "Spara andra Livechat Room Info",

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save