A couple of things felt missing but still it is better than the most, infact all! It is currently an alpha release of version 3.0 build, with only web-based GUI and 32bit release (requires 32bit libraries on x64 systems).
Here is a complete step by step installation guide:
Step 0: Pre-Requisites
According to the website:
System Requirements:utserver binary requires glibc-2.11 or newer. Do check this before continuing. To check your version of glibc:
- x86 Ubuntu 9.10+, Debian 5+, Fedora 12+
- Linux kernel 2.6.13 or newer required
rpm -q glibc(Note: If you have old libraries, or facing any library related error, I have a different guide for you HERE )
I am using a 32 bit Centos 6.2, but this guide should work with most linux distributions. If you are using a x64 distribution, you'll need to install all the 32 bit libraries.
In case of a 32 bit distro, there are hardly any dependencies to be installed. They are installed by default even in the minimal installations. Here is the list of dependencies anyway:
- glibc >= 2.11
- libgcc
- openssl
- krb5-libs
- libcom_err
- zlib
- keyutils-libs
- libselinux
yum install glibc libgcc openssl krb5-libs libcom_err zlib keyutils-libs libselinuxIf you are using a 64bit distro, install the 32bit libraries:
yum install glibc glibc.i[36]86 libgcc libgcc.i[36]86 openssl openssl.i[36]86 krb5-libs krb5-libs.i[36]86 libcom_err libcom_err.i[36]86 zlib zlib.i[36]86 keyutils-libs keyutils-libs.i[36]86 libselinux libselinux.i[36]86
Step 1: Make basic directories
I will keep it in /opt (ofcourse you can keep it anywhere feasible)
mkdir /opt/utorrent
mkdir /opt/utorrent/conf
mkdir /opt/utorrent/data
mkdir /opt/utorrent/pid
mkdir /opt/utorrent/webui
mkdir /opt/utorrent/log
Step 2: Download µTorrent Server
At the time of this writing, µTorrent Server alpha (3.0 build 25053) was the latest available one. You can find the latest release here. Download the package to a tmp location, extract and then copy the required files:
wget -O /tmp/utorrent-server-3.0-25053.tar.gz http://download.utorrent.com/linux/utorrent-server-3.0-25053.tar.gz
tar --directory /tmp -xzf /tmp/utorrent-server-3.0-25053.tar.gz
cp /tmp/utorrent-server-v3_0/utserver /opt/utorrent/
cp /tmp/utorrent-server-v3_0/webui.zip /opt/utorrent/webui/
Step 3: Libraries check
Before proceeding further, it will be a good idea to locate any missing libraries.
Use ldd command to find out any missing library:
ldd -r /opt/utorrent/utserverYou might get the following error:
/opt/utorrent/utserver: error while loading shared libraries: libssl.so.0.9.8: cannot open shared object file: No such file or directoryor
/opt/utorrent/utserver: error while loading shared libraries: libcrypto.so.0.9.8: cannot open shared object file: No such file or directoryIf openssl is installed properly, this might be because you have a newer version of the shared library. Creating a softlink should solve the problem.
First find out what version you have:
find /*/lib /*lib -type f -name "libssl.so.*"
find /*/lib /*lib -type f -name "libcrypto.so.*"This will show you the library you have installed, for example in my case it showed me that I've libssl.so.1.0.0 and libcrypto.so.1.0.0 installed:
[root@localhost ~]# find /*/lib /*lib -type f -name "libssl.so.*"Now simply create a soft link from the one you have to the one required by utserver:
/usr/lib/libssl.so.1.0.0
[root@localhost ~]# find /*/lib /*lib -type f -name "libcrypto.so.*"
/usr/lib/libcrypto.so.1.0.0
ln -s /usr/lib/libssl.so.1.0.0 /usr/lib/libssl.so.0.9.8
ln -s /usr/lib/libcrypto.so.1.0.0 /usr/lib/libcrypto.so.0.9.8(ofcourse you can always install the correct version of openssl instead of doing this softlink trick)
If every thing is fine you should get output some what like this:
[root@his apps]$ ldd -r /opt/utorrent/utserver(You can ignore the "no version information" warning). This shows every requirement is fulfilled and utorrent server can now run on this machine. Lets now do some final config tweaks.
/opt/utorrent/utserver: /usr/lib/libcrypto.so.0.9.8: no version information available (required by /opt/utorrent/utserver)
/opt/utorrent/utserver: /usr/lib/libssl.so.0.9.8: no version information available (required by /opt/utorrent/utserver)
linux-gate.so.1 => (0x0042c000)
libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0x00cb8000)
libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0x009dc000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00110000)
libm.so.6 => /lib/libm.so.6 (0x00800000)
librt.so.1 => /lib/librt.so.1 (0x001a2000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00465000)
libc.so.6 => /lib/libc.so.6 (0x001ab000)
/lib/ld-linux.so.2 (0x005a8000)
libgssapi_krb5.so.2 => /lib/libgssapi_krb5.so.2 (0x00c25000)
libkrb5.so.3 => /lib/libkrb5.so.3 (0x0033b000)
libcom_err.so.2 => /lib/libcom_err.so.2 (0x0012b000)
libk5crypto.so.3 => /lib/libk5crypto.so.3 (0x00622000)
libresolv.so.2 => /lib/libresolv.so.2 (0x00130000)
libdl.so.2 => /lib/libdl.so.2 (0x0045b000)
libz.so.1 => /lib/libz.so.1 (0x00767000)
libkrb5support.so.0 => /lib/libkrb5support.so.0 (0x004be000)
libkeyutils.so.1 => /lib/libkeyutils.so.1 (0x00991000)
libselinux.so.1 => /lib/libselinux.so.1 (0x0014a000)
Step 4: Create config file
In theory you can just run the utserver binary (like you did in the previous step), and utorrent server should be ready and useable. You don't necessarily need a config file But it is always a good idea to have a config file in hand, it'll make editing and experimenting with the configurations much easier and give you a lot more options to play with.
I wasn't able to find a complete and comprehensive config file. Users are either not using config file or using it just for a couple of options.
I've created this config file from the documentation and added all the options I found. All the directives are explained in the comments and set to the default value.
Here it is (only dir_root is set to /opt/utorrent/data all other values are default):
###########################################Don't worry most of the lines in the config are comments (only 34 directives in total). I recommend going through it once.
### ###
### Utorrent Server v3.0 Config File ###
### ###
### By Khizer Naeem ###
### khizernaeem@gmail.com ###
### Date: 29/12/2011 ###
### ###
###########################################
###########################################
# Note: - Don't use quotes or double quotes when giving a value
# - Don't add trailing / when specifying any directory
#####################
## Regular Settings #
#####################
#bind_port (integer):
# Default value: 6881. Port used for BitTorrent protocol. This can be any value in the range 1025-65000.
bind_port: 6881
#max_ul_rate (integer):
# Default value: -1. Maximum total upload rate in kilobytes per second. -1 means unlimited. We recommend setting it to -1.
max_ul_rate: -1
#max_ul_rate_seed (integer):
# Default value: -1. Maximum per-torrent upload rate when seeding, in kilobytes per second. -1 means unlimited. We recommend setting it to -1.
max_ul_rate_seed: -1
#conns_per_torrent (integer):
# Default value: 50. Maximum number of connections for a given torrent.
conns_per_torrent: 50
#max_total_connections (integer):
# Default value: 200. Maximum number of connection opened at the same time.
max_total_connections: 200
#auto_bandwidth_management (boolean):
# Default value: true. If true, upload bandwidth is automatically throttled in order to not impact other applications using TCP/IP.
auto_bandwidth_management: true
#max_dl_rate (integer):
# Default value: -1. Maximum total download rate in kilobytes per second. -1 means unlimited. We recommend setting it to -1.
max_dl_rate: -1
#seed_ratio (integer):
# Default value: 0. Seed ratio in percent (%) (e.g. 100 means 100%). If not 0, seeding will stop after reaching this upload/download ratio.
seed_ratio: 0
#seed_time (integer):
# Default value: 0. Time after which seeding will stop, in seconds. 0 means seeding won't stop.
seed_time: 0
#####################
# Internal Settings #
#####################
#bind_ip (string):
# IP address to use for socket connections. If not provided, a default IP address will be used. We do not recommend changing this value.
#ut_webui_port (integer):
# Default value: 8080. Port number where the utserver process accepts HTTP RPC API calls to support the µTorrent-compatible HTTP interface.
ut_webui_port: 8080
#token_auth_enable (boolean)
# Default value: true. If true, the µTorrent HTTP interface defends against cross-site request forgeries.
# If false, the µTorrent HTTP interface will not be protected in this manner.
token_auth_enable: true
#dir_root (string):
# Default value: "". If not empty, dir_active, dir_completed, and dir_torrent_files are relative to this directory.
dir_root:/opt/utorrent/data
#dir_active (string):
# Default value: "./". Directory in which currently downloaded data is saved.
# Can be an absolute path or relative to dir_root or the current working directory if dir_root is not defined or an empty string.
#dir_active: ./
#dir_completed (string):
# Default value: "". Directory where completed downloads are stored.
dir_completed:
#dir_download (string):
# Default value: "". Optional directory where completed downloads can be stored, instead of in dir_completed.
# If no value is specified for this setting, the value of dir_completed is used.
# This option can be specified multiple times in the file - once for each directory to be designated as such.
# This option can be used when adding torrents via the µTorrent HTTP interface, not via the SDK interface.
# Use the action list-dirs to obtain a list of download directories from the µTorrent HTTP interface.
# Use the option download_dir to specify which of these directories to use when adding a torrent by URL or file through the µTorrent HTTP interface;
# The index of each entry will be in order in which each entry appears in utserver.conf
dir_download:
#dir_torrent_files (string):
# Default value: "". Directory where torrent files are stored. If the empty string, the value of dir_active is used.
dir_torrent_files:
#dir_temp_files (string):
# Default value: "". Directory where temporary files are stored. If the empty string, the value of dir_active is used.
# Using a separate directory just for temporary files allows for deleting the files in this directory on boot and/or periodically.
# The utserver process creates temporary files with a .utt extension,
# if a value for this setting is specified, the utserver process will delete all files with that extension in that directory at process startup.
# The value should specify a directory, not a symbolic link to a directory.
dir_temp_files:
#dir_autoload (string):
# Default value: "". Directory where torrent files will be recognized and auto-loaded. If the empty string, auto-load is disabled.
dir_autoload:
#dir_autoload_delete (boolean):
# Default value: false. If true, torrent files in the autoload directory will be deleted after being loaded,
# else they will be renamed with an extension of .loaded. The dir_autoload setting must be specified for this setting to have an effect.
dir_autoload_delete: false
#upnp (boolean):
# Default value: true. If true, UPNP functionality for mapping ports is used by utserver. We recommend setting this value to true.
upnp: true
#natpmp (boolean):
# Default value: true. If true, NAT-PMP functionality for mapping ports is used by utserver. We recommend setting this value to true.
natpmp: true
#lsd (boolean):
# Default value: true. If true, Local Service Discovery is enabled. We recommend setting this value to true.
lsd: true
#dht (boolean):
# Default value: true. If true, Distributed Hash Table extension is enabled. We recommend setting this value to true.
dht: true
#pex (boolean):
# Default value: true. If true, Peer Exchange extension is enabled. We recommend setting this value to true.
pex: true
#rate_limit_local_peers (boolean):
# Default value: false. If true, rate limiting also applies to communications with peers in the local subnet. We recommend setting this value to false.
rate_limit_local_peers: false
#disk_cache_max_size (integer):
# Default value: 0. Maximum amount of memory used by each of the read, write, and piece caches. Value is in megabytes.
# If 0, accepts the SDK's default choices on selecting sizes of disk caches. Maximum value is 512.
disk_cache_max_size: 0
#preferred_interface (string):
# Default value: "". If defined, name of network interface to be preferred,
# when attempting to search among network interfaces for an external IP and hardware address.
# If empty string, preferred interface is ignored.
preferred_interface:
#admin_name (string):
# Default value: "admin". If defined, name that must be supplied (along with the password) when authenticating to the server via the HTTP interface.
# This allows the administrator to define an initial non-default value for this name.
# This value will not be applied from utserver.conf if settings.dat already exists.
admin_name: admin
#admin_password (string):
# Default value: "". If defined, password that must be supplied (along with the name) when authenticating to the server via the HTTP interface.
# This allows the administrator to define an initial non-default value for this password.
# This value will not be applied from utserver.conf if settings.dat already exists.
admin_password:
#logmask (integer):
# Default value: 0. A mask whose bits when set allow certain categories of log messages to be generated.
# The bits (0 - 31) in the value of this setting correspond to a set of internal events and subsystems.
#
# 3 - send have
# 6 - hole punch
# 7 - got bad piece request
# 8 - trace
# 9 - piece picker
# 10 - got bad cancel
# 11 - got bad unchoke
# 12 - got bad piece
# 13 - rss
# 14 - rss error
# 15 - got have
# 16 - got bad have
# 17 - error
# 18 - aggregated
# 19 - disconnect
# 20 - out connect
# 21 - in connect
# 22 - UPnP
# 23 - UPnP error
# 24 - NATPMP
# 25 - NATPMP error
# 26 - metadata finish
# 27 - web UI
# 28 - got bad reject
# 29 - pex
# 30 - peer messages
# 31 - blocked connect
logmask: 0
#dir_request (string):
# Default value: "". Directory where maintenance request files will be recognized, loaded, and deleted.
# If the empty string, maintenance request handling is disabled.
#
# Your software running on your device can create the following files in this directory in order to request the following maintenance procedures.
#
# If the file c.utmr is created in or moved into this directory,
# the credentials necessary to access the µTorrent HTTP interface will be reset to username admin and a blank password.
#
# If the file wipl.utmr is created in or moved into this directory,
# the IP restriction list that limits the IPs that can use the µTorrent HTTP interface is cleared,
# so that there will be no restrictions on IP address.
#
# If the file rcf.utmr is created in or moved into this directory,
# the server will reload the configuration file. If you always use this method to request a configuration file reload,
# you can safely change the value of this setting while the server is running.
#ut_webui_dir (string):
# Default value: "". Directory where the web UI file archive webui.zip is stored,
# or which contains a webui subdirectory within which the unarchived web UI files are stored.
# It can be an absolute path or set relative to the current directory.
ut_webui_dir:
#finish_cmd (string), state_cmd (string):
# Default value: "". If defined,
# finish_cmd is a command that will be executed upon completion of each torrent.
# state_cmd is a command that will be executed when a torrent changes state.
# The command is run asynchronously as the same user that runs the server process.
#
# The server permits substitutions in the command text as follows:
#
# %F Name of downloaded data file (for single-file torrents)
# %D directory where torrent data files are saved
# %N torrent title
# %S torrent state
# %P previous state of torrent
# %L label associated with torrent
# %T tracker
# %M status message
# %I hex-encoded info-hash
#
# State (%S) and previous state (%P) are integers that have the following values:
#
# 1 (error)
# 2 (checked)
# 3 (paused)
# 4 (super seeding)
# 5 (seeding)
# 6 (downloading)
# 7 (super seeding (forced))
# 8 (seeding (forced))
# 9 (downloading (forced))
# 10 (queued seed)
# 11 (finished)
# 12 (queued)
# 13 (stopped)
finish_cmd:
state_cmd:
Copy-Paste this configuration into the file utserver.conf in /opt/utorrent/conf/ directory using your favourite text editor like vim or download it directly:
wget -O /opt/utorrent/conf/utserver.conf http://kxr.me/blog/uts/utserver.conf
Now you can start the utorrent server with the following command:
/opt/utorrent/utserver -settingspath "/opt/utorrent/webui/" -configfile "/opt/utorrent/conf/utserver.conf" -logfile "/opt/utorrent/log/ut.log" -pidfile "/opt/utorrent/pid/utserver.pid" -daemonand stop it with:
kill `cat /opt/utorrent/pid/utserver.pid`That is not very convenient, so lets create a script to make things easier.
#!/bin/shCreate a file called utsctl in /opt/utorrent and copy-paste the code into it using your favourite editor or download it directly:
uts_bin="/opt/utorrent/utserver"
pid_file="/opt/utorrent/pid/utserver.pid"
settings_path="/opt/utorrent/webui/"
config_file="/opt/utorrent/conf/utserver.conf"
log_file="/opt/utorrent/log/ut.log"
start(){
if [ -s "$pid_file" ]
then
kill -s 0 `cat $pid_file` > /dev/null 2>&1
if [ "$?" == "0" ]
then
echo "Err: Utorrent seems to be running, PID `cat $pid_file`"
else
echo "Starting Utorrent Server.."
cd $settings_path;$uts_bin -settingspath $settings_path -configfile $config_file -logfile $log_file -pidfile $pid_file -daemon
fi
else
echo "Starting Utorrent Server.."
cd $settings_path;$uts_bin -settingspath $settings_path -configfile $config_file -logfile $log_file -pidfile $pid_file -daemon
fi
}
stop(){
if [ -s "$pid_file" ]
then
kill -s 0 `cat $pid_file` > /dev/null 2>&1
if [ "$?" == "0" ]
then
echo "Stopping Utorrent Server.."
kill `cat $pid_file`
tail -f /dev/null --pid `cat $pid_file`
rm -f $pid_file
else
echo "Err: Utorrent seems to be stopped, PID file $pid_file not found or empty"
fi
else
echo "Err: Utorrent seems to be stopped, PID file $pid_file not found or empty"
fi
}
status(){
if [ -s "$pid_file" ]
then
kill -s 0 `cat $pid_file` > /dev/null 2>&1
if [ "$?" == "0" ]
then
echo "Utorrent seems to be running, PID `cat $pid_file`"
else
echo "PID file present, but no process with PID `cat $pid_file` running"
fi
else
echo "Utorrent seems to be stopped, PID file $pid_file not found or empty"
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
stop
rm -vf $settings_path/settings.dat*
start
;;
status)
status
;;
*)
echo "Usage $0 {start|stop|reload|status}"
;;
esac
wget -O /opt/utorrent/utsctl http://kxr.me/blog/uts/utsctlOnce you have created this script file, lets make it executeable:
chmod +x /opt/utorrent/utsctlAnd also make it easily accessible, so that we don't have to type the whole path again and again:
ln -s /opt/utorrent/utsctl /usr/bin/utsctlNow starting stoping and checking the status is as easy as this:
utsctl start
utsctl stop
utsctl status
Step 5: Start µTorrent Server
Lets now start the utorrent server:
utsctl startIt should output "server started - using locale en_US.UTF-8" and return back to bash prompt. (Optionally, you can add this command to rc.local to auto-start it at startup)
You should now be able to access the utorrent server gui on localhost:
http://localhost:8080/guior via the ipaddress/hostname if accessing from a remote computer:
http://1.2.3.4:8080/gui(don't forget to allow this port in the system's iptable firewall and any other firewall in between)
Here is a screen-shot:
Playing with the configuration:
When you change a configuration in utserver.conf, just restarting the utserver daemon won't update the changes in WebUI. You'll have to remove the settings.dat files and then start the server again i.e,
utsctl stopI've added the "reload" option in the utsctl script that will do all these three things:
rm -f /opt/utorrent/webui/settings.dat*
utsctl start
utsctl reload
Good Luck :)
Questions/Suggestions/Comments/Corrections/Additions about this HowTo are welcome.
This comment has been removed by a blog administrator.
ReplyDeleteI appreciate your dedication to thoroughness. You've created a spot on tutorial here.
DeleteThanks
Deleteyour soft link doesnt work correctly or it`s just other problem in my case ((
ReplyDeleteln -s /usr/lib/libssl.so.1.0.0 /usr/lib/libssl.so.0.9.8
ln -s /usr/lib/libcrypto.so.1.0.0 /usr/lib/libcrypto.so.0.9.8
after this commands i try to start my utorr server:
/opt/utorrent/utserver: error while loading shared libraries: libssl.so.0.9.8: cannot open shared object file: No such file or directory
P.S. openSUSE 12.1
maybe theese libraries should be updated before when i applied theese commands?:
ln -s /usr/lib/libssl.so.1.0.0 /usr/lib/libssl.so.0.9.8
ln -s /usr/lib/libcrypto.so.1.0.0 /usr/lib/libcrypto.so.0.9.8
What is the output of:
Deletefind /*/lib /*lib -type f -name "libssl.so.*"
and
find /*/lib /*lib -type f -name "libssl.so.*"
in first command:
ReplyDelete/lib/libssl.so.1.0.0
and in the second case we have this:
/lib/libssl.so.1.0.0
wheres difference between theese commands which u show me? or maybe i didnt understand u properly? your idea its..?
I think I found the problem, in redhat/centos systems the libssl and libcrypto are in /usr/lib, in your case (openSuse) its in /lib. So These commands should work for you:
Deleteln -s /lib/libssl.so.1.0.0 /lib/libssl.so.0.9.8
ln -s /usr/libcrypto.so.1.0.0 /lib/libcrypto.so.0.9.8
I hope this helps :)
yes its true what u say about system directories for my os.
ReplyDeletethen i used 2 commands which u show me:
ln -s /lib/libssl.so.1.0.0 /lib/libssl.so.0.9.8
ln -s /usr/libcrypto.so.1.0.0 /lib/libcrypto.so.0.9.8
but first way to libssl 098 i have
and the second way doesnt exist because i cant find this file in way that u show me: ibcrypto.so.1.0.0
and i didnt found him with search
so what`s now?
WOW! i found him!
ReplyDeletethe way is here: /lib/libcrypto.so.0.9.8 -> /usr/libcrypto.so.1.0.0
libcrypto.so.1.0.0
))
/lib/libcrypto.so.0.9.8 -> /usr/libcrypto.so.1.0.0
ReplyDeletethere's an error occurred isn't it?
and highlighting in red in console mode..
this should be corrected.. but how?)
ln: failed to create a symbolic link «/lib/libcrypto.so.0.9.8»: The file exists
ReplyDeleteand first case i have: libssl.so.0.9.8 -> /lib/libssl.so.1.0.0 without error and red highlight
Whats the output of
Deletefind /*/lib /*lib -type f -name "libcrypto.so.*"
/lib/libcrypto.so.1.0.0
Deletewell.. its finally complete to create server but now i have new trouble with him )))
ReplyDeletehttp://localhost:8080/gui
when i trying to connect to him through google chrome, he asks me about my login and password, but when i enter requested data into the form - then utorr dont accepting this data and repeat his request.. and this is iterate (i mean cycle)
and yes, I forgot tell you - the server successfully started and works - it is viewed into the system monitor
ReplyDeletelol!! i look at conf file and see whats the problem i have with login and pwd ))))
ReplyDeleteThanks a lot for all!
Hi
ReplyDeleteNewbie in linux, I try to work utorrent in xubuntu 11.10, the error was"./utserver: error while loading shared libraries: libssl.so.0.9.8: cannot open shared object file: No such file or directory", and no chance to fix-it.
I try everything from here but failed.
What can I do?
Thanks
What is the output of:
Deletefind /*/lib /*lib -type f -name "libssl.so.*"
and
find /*/lib /*lib -type f -name "libcrypto.so.*"
A how to very good!!
ReplyDeleteI prefer run the utserver with a user specific (utorrent in my case) to avoid security problems:
In Step 1
useradd utorrent -d /opt/utorrent -s /bin/bash
In Step 4
Change permision:
chown utorrent:utorrent /opt/utorrent
And add in init script:
!/bin/sh
shell_user="utorrent"
uts_bin="/opt/utorrent/utserver"
pid_file="/opt/utorrent/pid/utserver.pid"
settings_path="/opt/utorrent/webui/"
config_file="/opt/utorrent/conf/utserver.conf"
log_file="/opt/utorrent/log/ut.log"
start(){
if [ -s "$pid_file" ]
then
kill -s 0 `cat $pid_file` > /dev/null 2>&1
if [ "$?" == "0" ]
then
echo "Err: Utorrent seems to be running, PID `cat $pid_file`"
else
echo "Starting Utorrent Server.."
su -c "$uts_bin -settingspath $settings_path -configfile $config_file -logfile $log_file -pidfile $pid_file -daemon" $shell_user
fi
else
echo "Starting Utorrent Server.."
su -c "$uts_bin -settingspath $settings_path -configfile $config_file -logfile $log_file -pidfile $pid_file -daemon" $shell_user
fi
}
..... (the same of original script)
Nice, Very thoughtful indeed! In my case I am running it behind closed ports (NAT) so running it as a root user didn't bothered me :)
DeleteThanks for this script!
DeleteI'm getting an error with the su when I run utsctl start. It asks me for a password (not the admin/no-password defined in the conf file) and then gives an authentication failure when I can't provide one.
DeleteOutput looks like this:
$ utsctl start
/usr/bin/utsctl: 15: [: 1: unexpected operator
Starting Utorrent Server..
Password:
su: Authentication failure
Btw, I created the user as you did - "useradd utorrent -d /opt/utorrent -s /bin/bash" and then deleted the user and tried again with "useradd -r utorrent -d /opt/utorrent -s /bin/bash" to make it a system (no password, no login) account.
I tried a number of other flags (e.g., "-M" for no password) but still have the same problem. I'm going to remove the utorrent user stuff, but that's too bad because it looked cleaner.
2 things - I didn't resolve the authentication error (yet? - I may or may not try that again), but my output pasted above had another error in it that I just solved.
DeleteThe line:
"/usr/bin/utsctl: 15: [: 1: unexpected operator"
is happening because utsctl is calling #!/bin/sh rather than #!/bin/bash. sh and bash use different syntax for comparisons. Running this in bash works perfectly for me.
Everithing work fine (Very correct manual). Look at utserver.conf for username and passw. Thanks.
ReplyDeletegreat job bro
ReplyDeleteHello,
ReplyDeleteI can' chmod +x /opt/utorrent/utsctl.
op: chmod: cannot access `/opt/utorrent/utsctl': No such file or directory
How to solve this problem.
looks like you don't have the script in place. What is the ouput of "ls -lah /opt/utorrent"?
Delete[root@******* /]# utsctl status
ReplyDeleteUtorrent seems to be stopped, PID file /opt/utorrent/pid/utserver.pid not found or empty
I'm getting that error can you help me.
This means utorrent is not running. Start utorrent server by "utsctl start".
DeleteSorry Sir I forgot to mention when I did that Is getting stopped and when I check the status I got that line
ReplyDelete[root@****** /]# utsctl start
ReplyDeleteStarting Utorrent Server..
/usr/bin/utsctl: line 21: -settingspath: command not found
[root@****** /]# utsctl status
Utorrent seems to be stopped, PID file /opt/utorrent/pid/utserver.pid not found or empty
There seem to be some problem in the script. Are you sure the script is fine?
DeleteCan you compare your script (/opt/utorrent/utsctl) with this one: (http://configs.ucoz.com/ut30/utsctl.sh.orig).
Just to be sure run the following command:
wget -O /opt/utorrent/utsctl http://configs.ucoz.com/ut30/utsctl.sh.orig
and try again
It's not allowing me to paste the whole log so I'm doing it on pastebin please have a look at it.
ReplyDeleteLink : http://tinypaste.com/0bb120a0
This is what I'm getting Sir,Sorry I'm a noob in Linux,I just need a torrent on my vps to seed some of my torrents
Can you help me sir ?
Oh, I think you are using an old distribution.
Deleteremove the old setup: ("rm -rf /opt/utorrent")
And then follow this guide: http://blog.kxr.me/2012/01/utorrent-on-centos-5-glibc211-not-found.html
This comment has been removed by the author.
ReplyDeletenice
ReplyDeleteAwesome, thank you for this! I saw a post on uTorrent's forums linking here, and they were right. I followed your instructions and it worked brilliantly! No errors, no problems! Thank you once again!
ReplyDeleteRegards,
~kyleey.
Thank you, this worked perfectly on OpenSUSE 12.1
ReplyDeleteHello
ReplyDeletewhat are the steps to install in LinuxMint 13 derived form Ubuntu 12.04?
Thanks
Gae
Step should be pretty much the same except the yum and the rpm part in the beginning. In case of Mint you can simply skip those steps (because I think you'll have those packages by default), if you find any missing package, install it with apt-get. Rest of the steps should be the same.
DeleteThanks man I used this before and it was working like charm. but now i have to install it again but I have problem with login detail.
ReplyDeleteas before i used this:
username: admin
pass : [blank]
but it isn't working now. why is that for? what should i do?
thanks
That is very odd! Try the following:
Delete- Double check the utsserver.conf, make sure the admin_name directive is set to "admin" and admin_password directive is blank. You can re-download the config file [wget -O /opt/utorrent/conf/utserver.conf http://kxr.me/blog/uts/utserver.conf]. Try reloading the configuration by [utsctl reload]
- If none of that works, try starting the utserver without any configuration, remove the configuration file [rm /opt/utorrent/conf/utserver.conf; touch /opt/utorrent/conf/utserver.conf], and then do a utsctl reload. See if this works.
non of those works
Deletewhat should i do man? please help!
DeleteI installed it once. and again i removed the utserver directory and then reinstalled it. but i have problem with username and password.
!!!!
How about you set a simple password in the configuration file and try accessing it with that password?
Deletei tried that but it was not working too.
Deleteis there any way to find out what is the matter with this?
Well you can try removing the /opt/utorrent [rm -vrf /opt/utorrent], and redo all the steps from the beginning
Deletei did it too. but nothing
DeleteWell I am running out of options. I suspect you are doing some thing wrong. It will be really hard for me to debug that here. You can try the utorrent help forums. If there is way you can give me remote access, may be I can help you out, if so, email me @ khizernaeem [@] gmail
Deletethanks for answering...
Deletecan u solve this problem?
Well I can try, at least I can look into it.
DeleteI emailed u with subject : Nima Azizzadeh
Deletethanks again
Problem solved :). Check your inbox for details, you were running some old instances, that weren't getting killed.
DeleteHey there, thanks so much for making this! I'm an absolute newbie at linux and when it had me simply download the file without any instructions, I was just a bit stunned... Anyway, I've figured most of it out, but I seem to be stuck at the very end. When I try to start utsctl I get the following:
ReplyDeleteAnne@Bit ~ $ utsctl start
Starting Utorrent Server..
/opt/utorrent/utserver: /lib/libcrypto.so.0.9.8: no version information available (required by /opt/utorrent/utserver)
/opt/utorrent/utserver: /usr/lib/libssl.so.0.9.8: no version information available (required by /opt/utorrent/utserver)
server started - using locale en_US.utf8
Anne@Bit ~ $ server exited with 1
The last line follows directly on the ones above it. Can you help me?
Thanks so much!
Which linux distribution are you using? Can you paste the output of utorrent log? If you followed the instructions of this how-to, the log should be in /opt/utorrent/log/ut.log
Deletei have same problem as Anne Fluitman and this is my log:
Delete01:11:19] Using locale en_US.UTF-8
[01:11:19] GetNodeID failed, using /dev/random
[01:11:19] total physical memory -1 max disk cache 33554432
[01:11:19] File not found during integrity check: /opt/utorrent/webui//dht.dat
[01:11:19] File not found during integrity check: /opt/utorrent/webui//dht.dat.new
[01:11:19] File not found during integrity check: /opt/utorrent/webui//dht.dat.old
[01:11:19] File not found during integrity check: /opt/utorrent/webui//rss.dat
[01:11:19] File not found during integrity check: /opt/utorrent/webui//rss.dat.new
[01:11:19] File not found during integrity check: /opt/utorrent/webui//rss.dat.old
[01:11:19] Loaded ipfilter.dat (0 entries)
[01:11:19] IPv6 is installed
[01:11:19] File not found during integrity check: /opt/utorrent/webui//resume.dat
[01:11:19] File not found during integrity check: /opt/utorrent/webui//resume.dat.new
[01:11:19] File not found during integrity check: /opt/utorrent/webui//resume.dat.old
[01:11:24] File not found during integrity check: /opt/utorrent/webui//webcache.dat
[01:11:24] File not found during integrity check: /opt/utorrent/webui//webcache.dat.new
[01:11:24] File not found during integrity check: /opt/utorrent/webui//webcache.dat.old
can you double check:
Delete1- Config file (use the wget method if you copy-pasted the config file).
2- File permissions (try "chmod -R 777 /opt/utorrent")
3- Make sure selinux is not interrupting
For buntu or non fedora users i guess
ReplyDeletedon't use the soft link, just install libssl0.9.8 using apt-get
fixed my problem
Thank you for the info :)
DeleteThis comment has been removed by a blog administrator.
DeleteThis comment has been removed by a blog administrator.
DeleteThis comment has been removed by the author.
ReplyDeletePlease could you help me in uninstalling it and removing all files I have downloaded or used in the process. Sorry for being a n00b in Linux.
ReplyDeleteThanks man! still working in 2013 ! :-)
ReplyDeleteGood to know :)
DeleteHello how can I change the directory from /opt/utorrent/data to /home/down ?
ReplyDeleteIn the configuration file, set the following variables:
Delete- Keep dir_root empty (other wise all other paths would be relative to this)
- Set dir_active and dir_completed to /home/down
Thanks it works
ReplyDeleteHow can I use ip filter server in utorrent?
ReplyDeletewhen i type utsctl stop does it make xxx.com:8080/gui unreachable or still open?
ReplyDeleteif someone ask installing in ubuntu, the script have to change this part
ReplyDeleteif [ "$?" == "0" ]
to
if [ $? = 0 ]
Or change #/bin/sh to #/bin/bash
ReplyDeleteHello, may I ask you how to change the listening port from 8080 to another port? I change ut_webui_port to 7777 (example) and it doesn't work at all.
ReplyDeleteI need advice..
Thanks
Hi this does not work for me on centos 6.4
ReplyDeleteI symlinked to the libs but it still does not start, I have also tried the "e" versions
libssl.so.0.9.8 -> /usr/lib/libssl.so.1.0.0
libcrypto.so.0.9.8 -> /usr/lib/libcrypto.so.1.0.0
find /*/lib /*lib -type f -name "libssl.so.*"
/usr/lib/plexmediaserver/libssl.so.1.0.0
/usr/lib/libssl.so.0.9.8e
/usr/lib/libssl.so.1.0.0
find /*/lib /*lib -type f -name "libcrypto.so.*"
/usr/lib/plexmediaserver/libcrypto.so.1.0.0
/usr/lib/libcrypto.so.0.9.8e
/usr/lib/libcrypto.so.1.0.0
ldd -r /opt/utorrent/utserver
linux-vdso.so.1 => (0x00007fff15023000)
libssl.so.0.9.8 => not found
libcrypto.so.0.9.8 => not found
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003026200000)
libm.so.6 => /lib64/libm.so.6 (0x0000003026600000)
librt.so.1 => /lib64/librt.so.1 (0x0000003027200000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x000000302ba00000)
libc.so.6 => /lib64/libc.so.6 (0x0000003025e00000)
/lib64/ld-linux-x86-64.so.2 (0x0000003025600000)
undefined symbol: SSL_CTX_free, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: SSL_library_init, version OPENSSL_0.9.8 (/opt/utorrent/u tserver)
undefined symbol: BIO_read, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: SSL_CTX_new, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: SSL_load_error_strings, version OPENSSL_0.9.8 (/opt/utorrent/u tserver)
undefined symbol: SSL_free, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: SSL_new, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: SSL_connect, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: BIO_s_mem, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: BIO_test_flags, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: OPENSSL_add_all_algorithms_noconf, version OPENSSL_0.9.8 ( /opt/utorrent/utserver)
undefined symbol: SSL_write, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: SSL_read, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: BIO_new, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: BIO_write, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: BIO_ctrl_pending, version OPENSSL_0.9.8 (/opt/utorrent/u tserver)
undefined symbol: SSLv23_client_method, version OPENSSL_0.9.8 (/opt/utorrent/u tserver)
undefined symbol: SSL_set_bio, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: SSL_state, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: ERR_get_error, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: ERR_load_BIO_strings, version OPENSSL_0.9.8 (/opt/utorrent/u tserver)
undefined symbol: ERR_reason_error_string, version OPENSSL_0.9.8 (/opt/ut orrent/utserver)
Dude! I appreciate very much what you've done here.
ReplyDeleteThanks for taking the time. You saved a lot of mine hehehe.
May the force be with you!
always using and working :D
ReplyDeletetested work properly on centos 6.4 :D
hey guys, it's asking for username password,
ReplyDeleteWhich one i have to use for it.
Reply soon as possible..........
The default user is admin with no password. You can set the password in /opt/utorrent/conf/utserver.conf, if you do so don't forget to do a "utsctl reload".
DeleteSo i did everything the guide says and the symbolic links worked well but now i have this problem:
ReplyDeletewhen running: /etc/init.d/utserver start
I get the following output:
[....] Starting uTorrent Server: utserver/usr/bin/utserver: /usr/lib/x86_64-linux-gnu/libcrypto.so.0.9.8: version `OPENSSL_0.9.8' not found (required by /usr/bin/utserver)
/usr/bin/utserver: /usr/lib/x86_64-linux-gnu/libssl.so.0.9.8: version `OPENSSL_0.9.8' not found (required by /usr/bin/utserver)
failed!
I linked the libcrypto and libssl using the commands above but i had to change the directories to fit with my os which is debian by the way.
Any help would be appericated. I did not get past starting the server because it never worked.
If you are running it on a 64 bit OS, try this: http://blog.kxr.me/2013/08/stand-alone-utorrent-server-x64-64bit.html
DeleteHere is the output from the ldd by the way:
Deletelinux-gate.so.1 => (0xf7773000)
libssl.so.0.9.8 => not found
libcrypto.so.0.9.8 => not found
libpthread.so.0 => /lib/i386-linux-gnu/i686/cmov/libpthread.so.0 (0xf7736000)
libm.so.6 => /lib/i386-linux-gnu/i686/cmov/libm.so.6 (0xf7710000)
librt.so.1 => /lib/i386-linux-gnu/i686/cmov/librt.so.1 (0xf7707000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf76ea000)
libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xf7587000)
/lib/ld-linux.so.2 (0xf7774000)
undefined symbol: SSL_CTX_free, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: SSL_library_init, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: BIO_read, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: SSL_CTX_new, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: SSL_load_error_strings, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: SSL_free, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: SSL_new, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: SSL_connect, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: BIO_s_mem, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: BIO_test_flags, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: OPENSSL_add_all_algorithms_noconf, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: SSL_write, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: SSL_read, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: BIO_new, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: BIO_write, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: BIO_ctrl_pending, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: SSLv23_client_method, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: SSL_set_bio, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: SSL_state, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: ERR_get_error, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: ERR_load_BIO_strings, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
undefined symbol: ERR_reason_error_string, version OPENSSL_0.9.8 (/opt/utorrent/utserver)
Hi, how can I autorun utorrent on boot ?
ReplyDelete1. cd /etc/rc.d
ReplyDelete2. vi rc.local
3. and add this line:
utsvtl start
??!!
Deleteähm you mean :
utsctl start
thank you
I installed it and everything work fine. But one error is: I download a file, then restart my server and go back, my file are downloading before go to error and can't download again.
ReplyDeleteThank for any help.
Hi, thanks for the tutorial. I've followed it to the letter and got exactly the same output as shown here and
ReplyDeletelaunching utsctl start gets me :
Starting Utorrent Server..
/opt/utorrent/utserver: /usr/lib/libcrypto.so.0.9.8: no version information available (required by /opt/utorrent/utserver)
/opt/utorrent/utserver: /usr/lib/libssl.so.0.9.8: no version information available (required by /opt/utorrent/utserver)
server started - using locale en_US.utf8
which should be fine, but the problem is, the processor hangs and no GUI shows up, i don't know what went wrong, can you help? thanks
by the way i'm using CentOS 6.4 on a 64bit AMD laptop
ReplyDeleteHi Khizer
ReplyDeleteThank you for this...
I have a problem. I would be appreciated if you help me...
I installed it and it absolutely workes but when i added a file for downloading, nothing happened. the progress wont go forward and will stay on %0. can u tell me how can I solve this issue?
thank you
hello my server CentOS 5.6 Minimal (32Bit) problem
ReplyDeletewhy problem help me pls
[root@91 ~]# utsctl start
Starting Utorrent Server..
/opt/utorrent/utserver: error while loading shared libraries: libssl.so.0.9.8: cannot open shared object file: No such file or directory
hello my server REDHAT 6.4 (64bit)
ReplyDeletewhen i try to access utorrent on localhost "http://localhost:8080/gui"
it ask for user name and password "A username and password are being requested by http://localhost:8080. The site says: "uTorrent""
please help me to sort out this problem
Thanks dude. I have installed uTorrent in my CentOS 6.4 server. Now I want to generate uTorrent link so that I can share my files to everyone. In windows this is easy and working. But in CentOS, when I press the same button to generate link, the box come for "Add RSS feed" and requires feed URL. Could you please tell me how could I generate uTorrent file?
ReplyDeleteWell done!
ReplyDeleteHello,
ReplyDeleteI ve got new problem here:
I have new version of Openssl with this files:
libcrypto.so.10
libcrypto.so.1.0.1e
libssl.so.10
libssl.so.1.0.1e
When I create new links :
ln -s /usr/lib/libssl.so.1.0.1e /usr/lib/libssl.so.0.9.8
ln -s /usr/lib/libcrypto.so.1.0.1e /usr/lib/libcrypto.so.0.9.8
and try to start uTorrent I get error:
/opt/utorrent/utserver: /usr/lib/libcrypto.so.0.9.8: version `OPENSSL_0.9.8' not found (required by /opt/utorrent/utserver)
/opt/utorrent/utserver: /usr/lib/libssl.so.0.9.8: version `OPENSSL_0.9.8' not found (required by /opt/utorrent/utserver)
What I can do ? I need to replace my Openssl installation ?
Mee too. Please help me!
ReplyDeleteAnonymousDecember 6, 2013 at 11:43 AM
Hello,
I ve got new problem here:
I have new version of Openssl with this files:
libcrypto.so.10
libcrypto.so.1.0.1e
libssl.so.10
libssl.so.1.0.1e
When I create new links :
ln -s /usr/lib/libssl.so.1.0.1e /usr/lib/libssl.so.0.9.8
ln -s /usr/lib/libcrypto.so.1.0.1e /usr/lib/libcrypto.so.0.9.8
and try to start uTorrent I get error:
/opt/utorrent/utserver: /usr/lib/libcrypto.so.0.9.8: version `OPENSSL_0.9.8' not found (required by /opt/utorrent/utserver)
/opt/utorrent/utserver: /usr/lib/libssl.so.0.9.8: version `OPENSSL_0.9.8' not found (required by /opt/utorrent/utserver)
What I can do ? I need to replace my Openssl installation ?
Reply
Hi,
ReplyDeleteDid you find fix for above fix, i am also getting same issue.
./utserver: /lib64/libssl.so.0.9.8: version `OPENSSL_0.9.8' not found (required by ./utserver)
./utserver: /lib64/libcrypto.so.0.9.8: version `OPENSSL_0.9.8' not found (required by ./utserver)
Hello, I'm under linux mint 16 and I've got utorrent-server-v3_0, is there a start/stop script I can use for it? if not, is there a possibility you may want to write one for it and share?
ReplyDeleteIf not, should I install your version?
Thank you
anyway I finally ended installing the (I guess) previous version of yours, it works just perfect! congrats!
DeleteBy the way... I was kind of scared when I first saw kxr-me in the download tray after I tried to download it firstly effortlessly with 404 error at first and empty files later to finally find it ok and proper. king takes rook, as I guess it stands for, seemed to me like a cibernetic gang stalking joke. I'm a bit concerned about these things those days... too many experiences! call me skizo... but... there's something more haha :s have a good journey!
DeleteHi, when I do utsctl stop and then try to shut down linux, it stucks with black screen and doesn't shut down... what can be happening?
ReplyDeleteI forgot to tell, when I force the shutting and start it over, utorrent doesn't work and utsctl start gives me this:
Delete~ $ utsctl start
Starting Utorrent Server..
server started - using locale en_US.UTF-8
~ $ server exited with 1
đồng tâm
ReplyDeletegame mu
cho thuê nhà trọ
cho thuê phòng trọ
nhac san cuc manh
số điện thoại tư vấn pháp luật miễn phí
văn phòng luật
tổng đài tư vấn pháp luật
dịch vụ thành lập công ty trọn gói
nước cờ trên bàn thương lượng
mbp
erg
nghịch lý
chi square test
nghệ thuật nói chuyện
coase
thuyết kỳ vọng
chiến thắng con quỷ trong bạn
cân bằng nash
Thái Chánh Dương thấy Triệu Quốc Đống xác định rõ ràng như vậy cũng yên tâm. Nói thật lúc này Cao tốc An Du cùng Cao tốc An Quế có thể thu hút đầu tư từ ngoài vào, một phần nguyên nhân là do chiêu đột biến của Triệu Quốc Đống. Đương nhiên trong này cũng có phần may mắn, nhưng dù sao cũng đã thành công.
Việc các tập đoàn có hứng thú đầu tư vào An Nguyên, theo Tô Giác Hoa nói đó là thành tích rất lớn. Bây giờ muốn thành lập Công ty khai thác đường cao tốc mà để Triệu Quốc Đống là công thần đứng sang bên đó là hơi quá. Cho nên Thái Chánh Dương muốn biết ý của hắn.
- Thái ca, em nói thật đó. Anh đừng nghĩ em tức mà nói như vậy. Em không thích làm kinh doanh, nhất là Công ty khai thác đường cao tốc có bao người nhìn chằm chằm vào.
Triệu Quốc Đống đây là nói thật. Công ty khai thác đường cao tốc là tâm điểm, ai vào đó thì tóc gáy sẽ bị dựng thẳng lên. Hắn không việc gì phải vào đó. Hắn cũng không muốn kiếm chút tiền từ đó. Nếu muốn tiền thì hắn cũng không việc gì đi vào quan trường.
Thái Chánh Dương có chút kinh ngạc. Y có thể thấy Triệu Quốc Đống thật sự không muốn tới Công ty khai thác đường cao tốc, điều này làm người ta rất khó hiểu. Đây là nơi mà bao người muốn đến, không ít người đều muốn một vị trí trong Công ty khai thác đường cao tốc.
- Hừ, người khác muốn tới còn không được, chú còn không muốn tới đó sao?
Thái Chánh Dương hừ một tiếng:
- Tuy nói như vậy nhưng chưa đến lúc. Trong thời gian này chú phải quản lý tốt Phòng cao tốc, nghỉ ngơi hai ngày thì được nhưng đừng bỏ dở việc công.
Triệu Quốc Đống vừa đi ra khỏi phòng Thái Chánh Dương thì Phó Thiên đã vẫy vậy hắn.
- Thiên ca có việc gì thế?
- Tối có lịch gì không?
I Must say, that Torrent is one of the most famous and used places on the web. The way they provide Free Data, and the popularity and Respect they have earned in these years, is really unbelievable. Officially they are illegal. but they are kind of Robin Hood type. Who takes paid things from the providers and make them available to the public for Free. Virtual Edge
ReplyDeleteThis was a shocking post. It has some look at here fundamental data on this subject. what is the best vpn
ReplyDeleteThey’re also cast as heels, allegedly crafted due to the McMahon family’s belief that the far right cost Linda the election. A tag feud between these two seems a natural fit, with Darren Young cast as the good guy. best vpn
ReplyDeleteI like your work its so helpful content thanks for sharring....
ReplyDeleteuTorrent 3.5.4
These updates are given by expert universe of warcraft players. On the off chance that you have issues introducing the extra, you won't get any help. Not even to make reference to each one of those infections. https://luckyshiner.com/extratorrent-proxy-mirror-sites-alternatives/
ReplyDeleteI really enjoyed your blog Thanks for sharing such an informative post.
ReplyDeleteeCommerce Web Development Singapore
good information & very helpful for others
크레이지슬롯
벳365코리아
온라인슬롯머신
해외토토사이트
하이게이밍
릴게임사이트
카지노사이트
아바타카지노
파워볼사이트
바카라사이트
Freelance Web Development Singapore
ReplyDeletebecause without you knowing there are many sites that are scam and will threaten you can not carry out withdrawals in real terms. Because of that
Speaker or Volume button not working.
그래프게임
벳365코리아
1XBET토토사이트
하이게이밍
벳365코리아
그래프사이트
릴게임사이트
해시게임
원벳토토사이트
바카라사이트