Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/diaspora/diaspora.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--app/views/layouts/application.html.haml2
-rw-r--r--config/app_config.yml.example10
-rw-r--r--config/environment.rb2
-rw-r--r--config/initializers/_load_app_config.rb49
-rw-r--r--config/routes.rb97
-rw-r--r--config/server.sh6
-rwxr-xr-xscript/get_env.sh23
-rwxr-xr-xscript/server21
9 files changed, 119 insertions, 92 deletions
diff --git a/.gitignore b/.gitignore
index 5e28dee54..4524de687 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,6 +18,7 @@ public/stylesheets/application.css
public/stylesheets/sessions.css
public/stylesheets/ui.css
public/stylesheets/mobile.css
+public/diaspora
spec/fixtures/users.yaml
# Uploded files and local files
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index 625fe3f58..90d24de07 100644
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -91,7 +91,7 @@
%li= link_to '@joindiaspora', "http://twitter.com/joindiaspora"
%li= link_to 'github', "https://github.com/diaspora/diaspora"
%li= link_to t('layouts.header.blog'), "http://blog.joindiaspora.com"
- %li= link_to t('layouts.header.code'), "#{root_url}source.tar.gz"
+ %li= link_to t('layouts.header.code'), "#{root_url}/source.tar.gz"
%li= link_to t('.whats_new'), 'https://github.com/diaspora/diaspora/wiki/Changelog'
-if !@landing_page && request.url.match(/joindiaspora.com/)
diff --git a/config/app_config.yml.example b/config/app_config.yml.example
index 5d2617fd6..da05a5749 100644
--- a/config/app_config.yml.example
+++ b/config/app_config.yml.example
@@ -4,7 +4,7 @@
default:
- # Hostname of this host, as seen from the internet.
+ # Url of this host, as seen from the internet.
pod_url: "http://localhost:3000"
# Set this to true in order to close signups. Users will still be
@@ -68,12 +68,12 @@ default:
#google analytics key, if false, it won't include the javascript
google_a_site: false
-
+
#piwik integration if not set, no javascript included
- piwik_id:
+ piwik_id:
# the site url in raw format (e.g. pikwik.examplehost.com)
- piwik_url:
-
+ piwik_url:
+
#cloudfiles username and api-key, used for backups
cloudfiles_username: 'example'
diff --git a/config/environment.rb b/config/environment.rb
index 0586220b5..9b9b045f0 100644
--- a/config/environment.rb
+++ b/config/environment.rb
@@ -27,3 +27,5 @@ end
# Initialize the rails application
Diaspora::Application.initialize!
+# Valid as long as thin serves the assets.
+ActionController::Base.asset_host = APP_CONFIG[ :pod_url]
diff --git a/config/initializers/_load_app_config.rb b/config/initializers/_load_app_config.rb
index 8b4eda713..46e9d181b 100644
--- a/config/initializers/_load_app_config.rb
+++ b/config/initializers/_load_app_config.rb
@@ -8,35 +8,40 @@
# Specific items
# * pod_url: As in app_config.yml, normalized with a trailing /.
# * pod_uri: An uri object derived from pod_url.
+#
+if defined? APP_CONFIG
+ false
+else
+ require 'uri'
-require 'uri'
+ def load_config_yaml filename
+ YAML.load(File.read(filename))
+ end
-def load_config_yaml filename
- YAML.load(File.read(filename))
-end
+ if File.exist? "#{Rails.root}/config/app_config.yml"
+ all_envs = load_config_yaml "#{Rails.root}/config/app_config.yml"
+ all_envs = load_config_yaml "#{Rails.root}/config/app_config.yml.example" unless all_envs
+ else
+ puts "WARNING: No config/app_config.yml found! Look at config/app_config.yml.example for help."
+ all_envs = load_config_yaml "#{Rails.root}/config/app_config.yml.example"
+ end
-if File.exist? "#{Rails.root}/config/app_config.yml"
- all_envs = load_config_yaml "#{Rails.root}/config/app_config.yml"
- all_envs = load_config_yaml "#{Rails.root}/config/app_config.yml.example" unless all_envs
-else
- puts "WARNING: No config/app_config.yml found! Look at config/app_config.yml.example for help."
- all_envs = load_config_yaml "#{Rails.root}/config/app_config.yml.example"
-end
+ if all_envs[Rails.env.to_s]
+ APP_CONFIG = all_envs['default'].merge(all_envs[Rails.env.to_s]).symbolize_keys
+ else
+ APP_CONFIG = all_envs['default'].symbolize_keys
+ end
-if all_envs[Rails.env.to_s]
- APP_CONFIG = all_envs['default'].merge(all_envs[Rails.env.to_s]).symbolize_keys
-else
- APP_CONFIG = all_envs['default'].symbolize_keys
-end
-
-begin
+ begin
APP_CONFIG[:pod_uri] = URI.parse( APP_CONFIG[:pod_url])
-rescue
+ rescue
puts "WARNING: pod url " + APP_CONFIG[:pod_url] + " is not a legal URI"
-end
+ end
-APP_CONFIG[:pod_url] = APP_CONFIG[:pod_uri].normalize.to_s
+ APP_CONFIG[:pod_url] = APP_CONFIG[:pod_uri].normalize.to_s
+ APP_CONFIG[:pod_url].chomp!("/"); APP_CONFIG[:pod_url]+= '/'
-if APP_CONFIG[:pod_uri].host == "example.org" && Rails.env != "test"
+ if APP_CONFIG[:pod_uri].host == "example.org" && Rails.env != "test"
puts "WARNING: Please modify your app_config.yml to have a proper pod_url!"
+ end
end
diff --git a/config/routes.rb b/config/routes.rb
index e8b45c3ac..fc760f684 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -3,54 +3,55 @@
# the COPYRIGHT file.
Diaspora::Application.routes.draw do
- resources :status_messages, :only => [:create, :destroy, :show]
- resources :comments, :only => [:create]
- resources :requests, :only => [:destroy, :create]
- resources :services
-
- resources :notifications
- resources :posts, :only => [:show], :path => '/p/'
-
-
-
- match '/people/share_with' => 'people#share_with', :as => 'share_with'
- resources :people do
- resources :status_messages
- resources :photos
+ scope APP_CONFIG[:pod_uri].path || '' do
+
+ resources :status_messages, :only => [:create, :destroy, :show]
+ resources :comments, :only => [:create]
+ resources :requests, :only => [:destroy, :create]
+ resources :services
+
+ resources :notifications
+ resources :posts, :only => [:show], :path => '/p/'
+
+ match '/people/share_with' => 'people#share_with', :as => 'share_with'
+ resources :people do
+ resources :status_messages
+ resources :photos
+ end
+
+ match '/people/by_handle' => 'people#retrieve_remote', :as => 'person_by_handle'
+ match '/auth/:provider/callback' => 'services#create'
+ match '/auth/failure' => 'services#failure'
+
+ match 'photos/make_profile_photo' => 'photos#make_profile_photo'
+ resources :photos, :except => [:index]
+
+ devise_for :users, :controllers => {:registrations => "registrations",
+ :password => "devise/passwords",
+ :invitations => "invitations"}
+ # added public route to user
+ match 'public/:username', :to => 'users#public'
+ match 'getting_started', :to => 'users#getting_started', :as => 'getting_started'
+ match 'getting_started_completed', :to => 'users#getting_started_completed'
+ match 'users/export', :to => 'users#export'
+ match 'users/export_photos', :to => 'users#export_photos'
+ match 'login', :to => 'users#sign_up'
+ resources :users, :except => [:create, :new, :show]
+
+ match 'aspects/move_contact', :to => 'aspects#move_contact', :as => 'move_contact'
+ match 'aspects/add_to_aspect', :to => 'aspects#add_to_aspect', :as => 'add_to_aspect'
+ match 'aspects/remove_from_aspect',:to => 'aspects#remove_from_aspect', :as => 'remove_from_aspect'
+ match 'aspects/manage', :to => 'aspects#manage'
+ resources :aspects, :except => [:edit]
+
+ #public routes
+ match 'webfinger', :to => 'publics#webfinger'
+ match 'hcard/users/:id', :to => 'publics#hcard'
+ match 'receive/users/:id', :to => 'publics#receive'
+ match 'hub', :to => 'publics#hub'
+
+ #root
+ root :to => 'home#show'
end
-
- match '/people/by_handle' => 'people#retrieve_remote', :as => 'person_by_handle'
- match '/auth/:provider/callback' => 'services#create'
- match '/auth/failure' => 'services#failure'
-
- match 'photos/make_profile_photo' => 'photos#make_profile_photo'
- resources :photos, :except => [:index]
-
- devise_for :users, :controllers => {:registrations => "registrations",
- :password => "devise/passwords",
- :invitations => "invitations"}
- # added public route to user
- match 'public/:username', :to => 'users#public'
- match 'getting_started', :to => 'users#getting_started', :as => 'getting_started'
- match 'getting_started_completed', :to => 'users#getting_started_completed'
- match 'users/export', :to => 'users#export'
- match 'users/export_photos', :to => 'users#export_photos'
- match 'login', :to => 'users#sign_up'
- resources :users, :except => [:create, :new, :show]
-
- match 'aspects/move_contact', :to => 'aspects#move_contact', :as => 'move_contact'
- match 'aspects/add_to_aspect', :to => 'aspects#add_to_aspect', :as => 'add_to_aspect'
- match 'aspects/remove_from_aspect',:to => 'aspects#remove_from_aspect', :as => 'remove_from_aspect'
- match 'aspects/manage', :to => 'aspects#manage'
- resources :aspects, :except => [:edit]
-
- #public routes
- match 'webfinger', :to => 'publics#webfinger'
- match 'hcard/users/:id', :to => 'publics#hcard'
match '.well-known/host-meta',:to => 'publics#host_meta'
- match 'receive/users/:id', :to => 'publics#receive'
- match 'hub', :to => 'publics#hub'
-
- #root
- root :to => 'home#show'
end
diff --git a/config/server.sh b/config/server.sh
index 26125509b..8c3e9f083 100644
--- a/config/server.sh
+++ b/config/server.sh
@@ -1,16 +1,14 @@
#
# Included by script/server
#
-THIN_PORT=3000
-SOCKET_PORT=8080
# Choose one mode by uncommenting
export RAILS_ENV='development'
#export RAILS_ENV='production'
#export RAILS_ENV='test'
-# See thin -h for possible values.
-DEFAULT_THIN_ARGS="-p $THIN_PORT -e $RAILS_ENV"
+# See thin -h for possible values. script/server sets -p <port>.
+DEFAULT_THIN_ARGS="-e $RAILS_ENV"
# Set to 'no' to disable server dry-run at first start
# creating generated files in public/ folder.
diff --git a/script/get_env.sh b/script/get_env.sh
new file mode 100755
index 000000000..44e77e491
--- /dev/null
+++ b/script/get_env.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+#
+# Get value from APP_CONFIG
+#
+# Usage get_env [key ...]
+
+path=$( readlink -fn $0) && cd $(dirname $path)/.. || exit 2
+
+if [[ ! -e tmp/environment || tmp/environment -ot config/app_config.yml ]]
+then
+ ruby > tmp/environment << 'EOT'
+ require File.join('config', 'environment.rb')
+ APP_CONFIG.each { |key, value| puts key.to_s + "\t" + value.to_s }
+ puts "pod_uri.host\t" + APP_CONFIG[:pod_uri].host.to_s
+ puts "pod_uri.path\t" + APP_CONFIG[:pod_uri].path.to_s
+ puts "pod_uri.port\t" + APP_CONFIG[:pod_uri].port.to_s
+EOT
+fi
+
+for key in $@; do
+ awk -v key=$key '{ if ($1 == key ) print $2 }' < tmp/environment
+done
+
diff --git a/script/server b/script/server
index b20e0d59c..dcc3d457e 100755
--- a/script/server
+++ b/script/server
@@ -12,12 +12,17 @@ OS=`uname -s`
function init_public
# Create all dynamically generated files in public/ folder
{
+ sub_uri=$(./script/get_env.sh pod_uri.path)
+ if [ -n "$sub_uri" ]; then
+ cd public; ln -sf . ${sub_uri##/}; cd ..
+ fi
bundle exec thin \
-d --pid log/thin.pid --address localhost --port $THIN_PORT \
start
+ pod_url=$(./script/get_env.sh pod_url)
for ((i = 0; i < 30; i += 1)) do
sleep 2
- wget -q -O tmp/server.html http://localhost:$THIN_PORT && \
+ wget -q -O tmp/server.html "$pod_url" && \
rm tmp/server.html && break
done
bundle exec thin --pid log/thin.pid stop
@@ -75,14 +80,8 @@ function redis_config
config/redis.conf
}
-# Scan for -p, find out what port thin is about to use.
-args="$DEFAULT_THIN_ARGS $@"
-prev_arg=''
-for arg in $( echo $args | awk '{ for (i = 1; i <= NF; i++) print $i}')
-do
- [ "$prev_arg" = '-p' ] && THIN_PORT="$arg"
- prev_arg="$arg"
-done
+THIN_PORT=$(./script/get_env.sh 'pod_uri.port')
+SOCKET_PORT=$(./script/get_env.sh 'socket_port')
# Is someone listening on the ports already? (ipv4 only test ?)
services=$( chk_service $THIN_PORT )
@@ -107,8 +106,6 @@ if [ -n "$services" ]; then
exit 64
fi
-
-
# Check if Mongo is running
if ! ps ax | grep -v grep | grep mongod >/dev/null
then
@@ -145,4 +142,4 @@ mkdir -p -v log/thin/
bundle exec ruby ./script/websocket_server.rb&
redis-server config/redis.conf &>log/redis-console.log &
QUEUE=* bundle exec rake resque:work&
-bundle exec thin start $args
+bundle exec thin start -p $THIN_PORT $@