5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-11-19 04:16:22 +00:00

Merge branch 'issue-12773' into panel.sutty.nl
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
f 2023-03-28 16:23:32 -03:00
commit 86f3df8cc0
4 changed files with 16 additions and 33 deletions

View file

@ -12,31 +12,6 @@ module Api
render json: sites_names + alternative_names + api_names + www_names
end
# Sitios con hidden service de Tor
#
# @return [Array] lista de nombres de sitios sin onion aun
def hidden_services
render json: DeployHiddenService.where(values: nil).includes(:site).pluck(:name)
end
# Tor va a enviar el onion junto con el nombre del sitio y tenemos
# que guardarlo en su deploy_hidden_service.
#
# @params [String] name
# @params [String] onion
def add_onion
site = Site.find_by(name: params[:name])
if site
usuarie = GitAuthor.new email: "tor@#{Site.domain}", name: 'Tor'
service = SiteService.new site: site, usuarie: usuarie,
params: params
service.add_onion
end
head :ok
end
private
def canonicalize(name)

View file

@ -6,7 +6,11 @@ class DeployHiddenService < DeployWww
before_create :create_hidden_service!
ONION_RE = /\A[a-z0-9]{56}\.onion\z/.freeze
def fqdn
create_hidden_service! if onion.blank?
onion.tap do |onion|
raise ArgumentError, 'Aun no se generó la dirección .onion' if onion.blank?
end
@ -19,6 +23,15 @@ class DeployHiddenService < DeployWww
private
def create_hidden_service!
self.onion = HiddenServiceClient.new.create(site.name)
onion_address = HiddenServiceClient.new.create(site.name)
if onion_address =~ ONION_RE
self.onion = onion_address
usuarie = GitAuthor.new email: "tor@#{Site.domain}", name: 'Tor'
params = { onion: onion_address, deploy: self }
SiteService.new(site: site, usuarie: usuarie, params: params).add_onion
end
end
end

View file

@ -64,14 +64,11 @@ SiteService = Struct.new(:site, :usuarie, :params, keyword_init: true) do
# Agregar una dirección oculta de Tor al DeployHiddenService y a la
# configuración del Site.
def add_onion
onion = params[:onion].strip
deploy = DeployHiddenService.find_by(site: site)
onion = params[:onion]
deploy = params[:deploy]
return false unless !onion.blank? && deploy
deploy.values[:onion] = onion
deploy.save
site.config['onion-location'] = onion
site.config.write

View file

@ -11,8 +11,6 @@ Rails.application.routes.draw do
namespace :v1 do
resources :csp_reports, only: %i[create]
get :'sites/hidden_services', to: 'sites#hidden_services'
post :'sites/add_onion', to: 'sites#add_onion'
resources :sites, only: %i[index], constraints: { site_id: /[a-z0-9\-.]+/, id: /[a-z0-9\-.]+/ } do
get :'invitades/cookie', to: 'invitades#cookie'
post :'posts/:layout', to: 'posts#create', as: :posts