[Plugin] rclone


Waseh

Recommended Posts

Need help to config the rclone plugin

 

I have the rclone plugin installed works great.

With the release of the newer version that has a directory cache I installed it. Went thru and set up the cache folders like the rclone website said. It seems to work great just one major problem.

 

The cache for my plex directory that is on a gdrive, The cache fills up rootfs. This reaches a point that the webgui of unraid can no longer work and goes all crazy. Uraid dockers work great except shares drop and the gui is almost unusable.  I cannot save any log files. If I have the system log open I can see it is throwing errors. 

I ran df - h command in putty and rootfs is full. I ran du -hx / and the culprit is /.cache/rclone/cache-backend/TvCache at over 5Gigs

 

If I reboot, everything is fine for a day or so.

 

How do I set rclone to use the cache drive or just system mem? I saw on the rclone webpage a way to specify the place to cache to but I my skills are not good enough to set it up in unraid.

 

I have 12gigs on this machine and it has plenty free.

 

Thanks

 

Edit: I want to add this is on a 6.4 version machine. I did not have this problem when it was a 6.3.5

 

 

Edited by Aric
Link to comment
15 hours ago, Dimtar said:

@Aric There is a command with rclone to set the cache DB location, have you tried that?

 

Are you talking about this?

 

Quote

 

Here are the command line options specific to this cloud storage system.

--cache-chunk-path=PATH

Path to where partial file data (chunks) is stored locally. The remote name is appended to the final path.

This config follows the --cache-db-path. If you specify a custom location for --cache-db-path and don't specify one for --cache-chunk-path then --cache-chunk-path will use the same path as --cache-db-path.

Default: /cache-backend/ Example: /.cache/cache-backend/test-cache

--cache-db-path=PATH

Path to where the file structure metadata (DB) is stored locally. The remote name is used as the DB file name.

Default: /cache-backend/ Example: /.cache/cache-backend/test-cache

 

 

I know about this but I am not sure how to integrate it into the comand line of rclone when it starts. This would be the part of rootfs that is filling up.

 

Link to comment

Here is a very rough example.

rclone mount --cache-db-path /mnt/user/rclonedb --cache-chunk-path /mnt/user/rclonechunk googlecache: /mnt/user/googlemount

You can just set it all in line, the above example would only work if you created the shares before hand and hopefully put them on a cache drive. Hope this helps somewhat.

Link to comment
On 1/28/2018 at 3:28 PM, Dimtar said:

Here is a very rough example.


rclone mount --cache-db-path /mnt/user/rclonedb --cache-chunk-path /mnt/user/rclonechunk googlecache: /mnt/user/googlemount

You can just set it all in line, the above example would only work if you created the shares before hand and hopefully put them on a cache drive. Hope this helps somewhat.

 

Hi.. I did this and it seems to be working pretty good. Sorry it took so long to reply. I decided to get a PERC H310 Card and flash it to use in my unraid box. 

 

Thanks for the help

 

Link to comment
  • 2 weeks later...

I just installed rclone as I get ready to transition away from CrashPlan. It's working great so far, connecting to Backblaze B2. I did notice a minor GUI issue however; the icon on the Settings page seems to be a default icon rather than the rclone one. The icon is correct on the Plugins page.

 

I saw there was an issue a while ago with the icon size, but since I installed rclone a couple of weeks ago I'm not sure if that's the issue. I have restarted my browser (Firefox) a couple of times since the install (browser & PC updates) with no change. I'm running unRAID 6.4.1.

 

Thanks for your help,

Jim

Capture_02152018_091000.png

Link to comment

I've just started using rclone again because I setup plexdrive yesterday.  I've just rebooted for the first time in a while and I think I've run into problems because I have a pfsense VM i.e. during boot my unraid server doesn't have any connectivity, so when the plugin tries to download the latest version of rclone it fails and I have to manually install it again after boot.

 

Is there anyway to modify the plugin so that if there's no connectivity, the last version of the plugin is available?  I think I fixed this before when I used the plugin by doing the following - I'll test if it still works when i reboot next time.

 

Quote

ok, I've solved the problem with the plugin by referring to the original post.  At boot the plugin reinstalls rclone and in the original post, the script also copied the .rclone.conf back to /root/.  So, I added and amended the line to copy the rclone.conf file from /boot/config/plugins/rclone/ to  /root/ at boot;

 

 


cp /boot/config/plugins/rclone/.rclone.conf /root/;
 

Here's my amended plugin in full.  To use:

 

1. copy code and call Rclone.plg and save on flash drive as per bakes82 instructions

2. install plugin

3. run "rclone config" from SSH/command line

4. copy the /root/.rclone.conf file to /boot/config/plugins/rclone/.rclone.conf and make sure this version is up to date before rebooting if you make any future changes to the /root/ version

5. to create CRON jobs, add as new rows to the CRON file in /boot/config/plugins/rclone/ and rename to 'rclone.cron'.  Then run 'update_cron' from SSH/command line and then 'cat /etc/cron.d/root'

 

Ammended code below

 

<?xml version='1.0' standalone='yes'?>

<!DOCTYPE PLUGIN [
<!ENTITY name      		"rclone-beta">
<!ENTITY author    		"Waseh">
<!ENTITY version   		"2017.09.23">
<!ENTITY bundleversion   	"2016.11.19">
<!ENTITY launch    		"Settings/rclone-beta">
<!ENTITY pluginURL 		"https://raw.githubusercontent.com/Waseh/rclone-unraid/beta/plugin/rclone.plg">
<!ENTITY bundleURL  		"https://raw.githubusercontent.com/Waseh/rclone-unraid/beta/archive/rclone-beta-&bundleversion;-x86_64-1.txz">
<!ENTITY rcloneversion		"beta-latest">
<!ENTITY rclonefile  		"rclone-&rcloneversion;-linux-amd64">
<!ENTITY rcloneurl		"http://beta.rclone.org/&rclonefile;.zip">
<!ENTITY md5bundle     		"d0e08a44127b71580fadeb903087080b">
]>

<PLUGIN name="&name;" author="&author;" version="&version;" launch="&launch;" pluginURL="&pluginURL;">

<CHANGES>
##&name;

###2017.09.23
- Always pull latest beta on install

###2017.08.16
- New beta version of rclone (v1.37-093-gb510c70c)

###2017.03.19
- New beta version of rclone (v1.36-05-g216499d)

###2017.03.02
- New beta version of rclone (v1.35-151-g1d42a34) with buffer support. See: https://forum.rclone.org/t/new-feature-buffer-size/1083

###2017.02.19a
- New beta version of rclone (v1.35-123-g6e0e1ad)

###2017.01.17a
- New beta version of rclone (v1.35-33-g47ebd07)
- Reverting previous patch

###2017.01.17
- New beta version of rclone (v1.35-33-g47ebd07)
- Wrapper removed

###2017.01.05
- New beta version of rclone (v1.35-13-ge1a49ca)

###2017.01.03
- New beta version of rclone (v1.35-10-g3b0f944)

###2016.12.05
- New beta version of rclone (v1.34-49-ge79a5de)

###2016.11.28
- New beta version of rclone (v1.34-38-g7929b6e)

###2016.11.21
- New beta version of rclone (v1.34-23-gc41b67e)
- /mnt/disks folder now created on install

###2016.11.19
- New beta version of rclone (v1.34-22-g0b562bc)
- Default button in GUI to return scripts to default state

###2016.11.15
- New beta version of rclone (v1.34-11-gbf243f3)

###2016.11.14a
- Go to webgui from plugin page

###2016.11.14
- Beta version of webgui
- Beta version of included template scripts
- New beta version of rclone (v1.34-11-gbf243f3)

###2016.11.08
- Fixed update routine

###2016.11.07
- New beta version of rclone (v1.34-04-g4105da2)

###2016.11.06
- New beta version of rclone (v1.34-02-g5f320cc)
- Check to see if stable branch installed

###2016.11.05a
- New beta version of rclone (v1.33-107-gff41b0d)

###2016.11.05
- New beta version of rclone (v1.33-106-ge162377)
- MD5 check of rclone zip

###2016.11.04
- New beta version of rclone (v1.33-99-g452c681)

###2016.11.03
- First official release
- New beta version of rclone

###2016.11.02
- More intuitive calling of rclone - Use rclone instead of myrclone
- More minor changes in preperation of official release

###2016.10.31
- New beta version of rclone
- Other minor improvements

###2016.10.27
- Changed version to latest beta
- Small modifications to make the plugin work again, and updateable from unraid interface

</CHANGES>

<!--

This plugin installs Rclone on unRAID systems.
This work is entirely based upon the plugin created by aschamberger: https://lime-technology.com/forum/index.php?topic=46663.msg501372
Thanks to stignz for his great guide: https://lime-technology.com/forum/index.php?topic=46663.0

-->

<!--
Check if stable is installed.
-->
<FILE Run="/bin/bash">
<INLINE>
if [ -d /usr/local/emhttp/plugins/rclone ]; then
echo ""
echo ""
echo "----------Stable Branch installed----------"
echo "Uninstall Stable branch to install Beta!"
echo ""
echo ""
exit 1
fi
</INLINE>
</FILE>

<!--
Get the rclone zip.
-->
<FILE Name="/boot/config/plugins/&name;/install/rclone-&rcloneversion;.zip">
<URL>&rcloneurl;</URL>
</FILE>


<!--
Get bundle.
-->
<FILE Name="/boot/config/plugins/&name;/install/rclone-&bundleversion;-bundle.txz" Run="upgradepkg --install-new">
<URL>&bundleURL;</URL>
<MD5>&md5bundle;</MD5>
</FILE>

<!--
Install script.
-->
<FILE Run="/bin/bash" Method="install">
<INLINE>

if [ -f /boot/config/plugins/&name;/install/ca-certificates.crt ]; then
  rm -f /boot/config/plugins/&name;/install/ca-certificates.crt
fi;
curl -o /boot/config/plugins/&name;/install/ca-certificates.crt https://raw.githubusercontent.com/bagder/ca-bundle/master/ca-bundle.crt

if [ -d /boot/config/plugins/&name;/install/rclone-v*/ ]; then
  rm -rf /boot/config/plugins/&name;/install/rclone-v*/
fi;

unzip /boot/config/plugins/&name;/install/rclone-&rcloneversion;.zip -d /boot/config/plugins/&name;/install/

rm -f $(ls /boot/config/plugins/&name;/install/rclone*.zip 2>/dev/null)
rm -f $(ls /boot/config/plugins/&name;/install/rclone*.txz 2>/dev/null | grep -v '&bundleversion;')

cp /boot/config/plugins/&name;/install/rclone-v*/rclone /usr/sbin/rcloneorig

if [ "$?" -ne "0" ]; then
  echo "Copy failed - rclone running"
  exit 1
fi

chown root:root /usr/sbin/rcloneorig
chmod 755 /usr/sbin/rcloneorig

mkdir -p /etc/ssl/certs/
cp /boot/config/plugins/&name;/install/ca-certificates.crt /etc/ssl/certs/

if [ ! -f /boot/config/plugins/&name;/.rclone.conf ]; then
  touch /boot/config/plugins/&name;/.rclone.conf;
fi;

cp /boot/config/plugins/rclone-beta/.rclone.conf /root/;

mkdir -p /boot/config/plugins/&name;/logs;
mkdir -p /boot/config/plugins/rclone-beta/scripts;
cp /boot/config/plugins/rclone-beta/install/scripts/* /boot/config/plugins/rclone-beta/scripts/ -R -n;

mkdir -p /mnt/disks/;

echo ""
echo "-----------------------------------------------------------"
echo " &name; has been installed."
echo "-----------------------------------------------------------"
echo ""

</INLINE>
</FILE>

<FILE Run="/bin/bash" Method="remove">
<INLINE>
rm -rf /boot/config/plugins/&name;/install
rm -f /usr/sbin/rcloneorig;
rm -f /usr/sbin/rclone;
rm -f /etc/ssl/certs/ca-certificates.crt

removepkg rclone-&bundleversion;-bundle >/dev/null

# we keep config and logs
#rm -f /boot/config/plugins/&name;/.rclone.conf;
#rm -f /boot/config/plugins/&name;/logs;

echo ""
echo "-----------------------------------------------------------"
echo " &name; has been uninstalled."
echo "-----------------------------------------------------------"
echo ""

</INLINE>
</FILE>

<FILE Name="/usr/sbin/rclone" Mode="0755">
<INLINE>
#!/bin/bash
log=false
args=()
for i in "$@" ; do
    if [[ $i = "--log" ]] ; then
        log=true
        continue
    fi
    if [[ $i = "-l" ]] ; then
        log=true
        continue
    fi
	args+=($i)
done

config=/boot/config/plugins/&name;/.rclone.conf
logfile=/boot/config/plugins/&name;/logs/rclone-$(date "+%Y%m%d").log
if [ "$log" = true ] &amp;&amp; [ ${#args[@]} -ge 1 ]; then
	rcloneorig --config $config "${args[@]}" &gt;&gt; $logfile 2&gt;&amp;1
else
	rcloneorig --config $config "$@";
fi;
</INLINE>
</FILE>

</PLUGIN>

 

Link to comment
On 2/28/2018 at 4:28 PM, DZMM said:

I've just started using rclone again because I setup plexdrive yesterday.  I've just rebooted for the first time in a while and I think I've run into problems because I have a pfsense VM i.e. during boot my unraid server doesn't have any connectivity, so when the plugin tries to download the latest version of rclone it fails and I have to manually install it again after boot.

 

Is there anyway to modify the plugin so that if there's no connectivity, the last version of the plugin is available?  I think I fixed this before when I used the plugin by doing the following - I'll test if it still works when i reboot next time.

 

 

 

ok, after a bit of jiggery I've managed to convert the plugin into a script that always installs the latest beta (the one in the plugin is about 4 months old).  I've added a check at the start for connectivity, just in case my pfsense VM hasn't fully booted in time:

 

if ping -q -c 1 -W 1 google.com >/dev/null; then
  echo "The network is up - proceeding"
else
  echo "The network is down - pausing"
  sleep 1m
fi

Full code below if anyone wants to give it a try.  I'm not sure it's creating the rclone.conf in the right place - on my PC it's using /root/.config/rclone/rclone.conf - if any problems, just copy your config file there

#!/bin/bash

# optional sleep to give pfsense VM time to setup connectivity

if ping -q -c 1 -W 1 google.com >/dev/null; then
  echo "The network is up - proceeding"
else
  echo "The network is down - pausing"
  sleep 1m
fi

# make supporting directory structure on flash drive
	mkdir -p /boot/config/plugins/rclone-beta
	mkdir -p /boot/config/plugins/rclone-beta/install
	mkdir -p /boot/config/plugins/rclone-beta/scripts
	mkdir -p /boot/config/plugins/rclone-beta/logs

#download dependencies to /boot/config/plugins/rclone-beta/install

	wget http://slackware.cs.utah.edu/pub/slackware/slackware64-14.2/slackware64/ap/man-1.6g-x86_64-3.txz -O //boot/config/plugins/rclone-beta/install/man-1.6g-x86_64-3.txz
	wget http://slackware.cs.utah.edu/pub/slackware/slackware64-14.2/slackware64/a/infozip-6.0-x86_64-3.txz -O //boot/config/plugins/rclone-beta/install/infozip-6.0-x86_64-3.txz
	curl -o /boot/config/plugins/rclone-beta/install/ca-certificates.crt https://raw.githubusercontent.com/bagder/ca-bundle/master/ca-bundle.crt

#Install dependencies
	installpkg /boot/config/plugins/rclone-beta/install/man-1.6g-x86_64-3.txz
	installpkg /boot/config/plugins/rclone-beta/install/infozip-6.0-x86_64-3.txz

# Check if stable is installed.

if [ -d /usr/local/emhttp/plugins/rclone ]; then
echo ""
echo ""
echo "----------Stable Branch installed----------"
echo "Uninstall Stable branch to install Beta!"
echo ""
echo ""
exit 1
fi

#Download latest version of rclone beta

wget https://beta.rclone.org/rclone-beta-latest-linux-amd64.zip -O //boot/config/plugins/rclone-beta/install/rclone-beta.zip

#Download package

wget https://raw.githubusercontent.com/Waseh/rclone-unraid/beta/archive/rclone-beta-2016.11.14-x86_64-1.txz -O //boot/config/plugins/rclone-beta/install/rclone-bundle.txz

# install package

upgradepkg --install-new /boot/config/plugins/rclone-beta/install/rclone-bundle.txz

# remove old cert and re-download

if [ -f /boot/config/plugins/rclone-beta/install/ca-certificates.crt ]; then
  rm -f /boot/config/plugins/rclone-beta/install/ca-certificates.crt
fi;

curl -o /boot/config/plugins/rclone-beta/install/ca-certificates.crt https://raw.githubusercontent.com/bagder/ca-bundle/master/ca-bundle.crt

# remove old rclone version if exists

if [ -d /boot/config/plugins/rclone-beta/install/rclone-v*/ ]; then
  rm -rf /boot/config/plugins/rclone-beta/install/rclone-v*/
fi;

# install

unzip /boot/config/plugins/rclone-beta/install/rclone-beta.zip -d /boot/config/plugins/rclone-beta/install/

cp /boot/config/plugins/rclone-beta/install/rclone-v*/rclone /usr/sbin/
chown root:root /usr/sbin/rclone
chmod 755 /usr/sbin/rclone

mkdir -p /etc/ssl/certs/
cp /boot/config/plugins/rclone-beta/install/ca-certificates.crt /etc/ssl/certs/

if [ ! -f /boot/config/plugins/rclone-beta/.rclone.conf ]; then
  touch /boot/config/plugins/rclone-beta/.rclone.conf;
fi;

mkdir -p /boot/config/plugins/rclone-beta/logs;
mkdir -p /boot/config/plugins/rclone-beta/scripts;
cp /boot/config/plugins/rclone-beta/install/scripts/* /boot/config/plugins/rclone-beta/scripts/ -R -n;

echo ""
echo "-----------------------------------------------------------"
echo " rclone-beta has been installed."
echo "-----------------------------------------------------------"
echo ""

##########################################################################################
######									rclone mount								######
##########################################################################################

#!/bin/bash

# make supporting directory structure on flash drive
	mkdir -p /boot/config/plugins/rclone-beta
	mkdir -p /boot/config/plugins/rclone-beta/install
	mkdir -p /boot/config/plugins/rclone-beta/scripts
	mkdir -p /boot/config/plugins/rclone-beta/logs

#download dependencies to /boot/config/plugins/rclone-beta/install

	wget http://slackware.cs.utah.edu/pub/slackware/slackware64-14.2/slackware64/ap/man-1.6g-x86_64-3.txz -O //boot/config/plugins/rclone-beta/install/man-1.6g-x86_64-3.txz
	wget http://slackware.cs.utah.edu/pub/slackware/slackware64-14.2/slackware64/a/infozip-6.0-x86_64-3.txz -O //boot/config/plugins/rclone-beta/install/infozip-6.0-x86_64-3.txz
	curl -o /boot/config/plugins/rclone-beta/install/ca-certificates.crt https://raw.githubusercontent.com/bagder/ca-bundle/master/ca-bundle.crt

#Install dependencies
	installpkg /boot/config/plugins/rclone-beta/install/man-1.6g-x86_64-3.txz
	installpkg /boot/config/plugins/rclone-beta/install/infozip-6.0-x86_64-3.txz

# Check if stable is installed.

if [ -d /usr/local/emhttp/plugins/rclone ]; then
echo ""
echo ""
echo "----------Stable Branch installed----------"
echo "Uninstall Stable branch to install Beta!"
echo ""
echo ""
exit 1
fi

#Download fresh version of rclone

wget https://beta.rclone.org/rclone-beta-latest-linux-amd64.zip -O //boot/config/plugins/rclone-beta/install/rclone-beta.zip

#Download package

wget https://raw.githubusercontent.com/Waseh/rclone-unraid/beta/archive/rclone-beta-2016.11.14-x86_64-1.txz -O //boot/config/plugins/rclone-beta/install/rclone-bundle.txz

# install package

upgradepkg --install-new /boot/config/plugins/rclone-beta/install/rclone-bundle.txz

# remove old cert and re-download

if [ -f /boot/config/plugins/rclone-beta/install/ca-certificates.crt ]; then
  rm -f /boot/config/plugins/rclone-beta/install/ca-certificates.crt
fi;

curl -o /boot/config/plugins/rclone-beta/install/ca-certificates.crt https://raw.githubusercontent.com/bagder/ca-bundle/master/ca-bundle.crt

# remove old rclone version if exists

if [ -d /boot/config/plugins/rclone-beta/install/rclone-v*/ ]; then
  rm -rf /boot/config/plugins/rclone-beta/install/rclone-v*/
fi;

# install

unzip /boot/config/plugins/rclone-beta/install/rclone-beta.zip -d /boot/config/plugins/rclone-beta/install/

cp /boot/config/plugins/rclone-beta/install/rclone-v*/rclone /usr/sbin/
chown root:root /usr/sbin/rclone
chmod 755 /usr/sbin/rclone

mkdir -p /etc/ssl/certs/
cp /boot/config/plugins/rclone-beta/install/ca-certificates.crt /etc/ssl/certs/

# create new conf file if none

if [ ! -f /boot/config/plugins/rclone-beta/.rclone.conf ]; then
  touch /boot/config/plugins/rclone-beta/.rclone.conf;
fi;

mkdir -p /boot/config/plugins/rclone-beta/logs;
mkdir -p /boot/config/plugins/rclone-beta/scripts;
cp /boot/config/plugins/rclone-beta/install/scripts/* /boot/config/plugins/rclone-beta/scripts/ -R -n;

echo ""
echo "-----------------------------------------------------------"
echo " rclone-beta has been installed."
echo "-----------------------------------------------------------"
echo ""

 

Link to comment

Hi guys, I've managed to get things set up just fine with google drive, but I'm having an issue where rclone does not seem to create my ecrypted directory, in my case named google:secure (google is my google drive remote).

 

I don't get any errors, but when I run "rclone lsd google:" from command line I see all my folders except for the encrypted folder.  I've done a bit of searching and I don't see anywhere that states google drive does not allow encrypted folder creation.

 

Any ideas?

Link to comment

I ended up solving my issue with some help on the rclone forums.  Apparently you must create the director you want to secure after encrypting the remote.  In my case since I had google:secure, I need to create the secure directory.  This was done with the "rclone mkdir google:secure" command.  All is well now.  

Link to comment
  • 1 month later...

Made this question easier to digest:

In SpaceInvaderOne video (gridrunner), he is able to Copy/Paste/Delete from a Mounted Cloud Drive using Krusader. I can do this too and it works fine.

 

I get permission errors when I try to do this through a Win10 VM though. The SpaceInvaderOne video shows successful Copy/Paste/Delete from a Mac VM, but not a Win VM. Wonder if anyone can help

Edited by Stupifier
Link to comment
  • 2 weeks later...
On 1/25/2018 at 4:14 PM, Waseh said:

It should survive a reboot as is (my install is surviving fine at least) 

 

I am having the same issue, it installs and works just fine (using SpaceInvaders guide) but after a restart, rclone is in Plug File Install Errors and this is listed: 

/boot/config/plugins-error/rclone.plg

On 6.5.1 rc5 but also did the same on an older version from January.

Any ideas?

pluginfileinstallerror.PNG

Link to comment

Anybody else using the new cache feature with encryption having memory leak issues? Memory usage climbs steadily over about 6 hours before making the unraid webui unresponsive and forcing a non clean reboot for me.

 

edit: Found where I was going wrong. The --cache-db-path flag needed to be set on the crypt mount instead of the cache mount in this situation.

Edited by EgillSkallagrimsson
Link to comment
1 hour ago, huffsper said:

Would love a fix so that rclone can install even if you don't have an internet connection straight away when booting the server. For people who run pfSense/OPNsense VM's we have to re-install the plugin every boot.

Maybe you could request nerdpack plugin to include rclone. That would solve it for you....but I think they are kind of picky about what they allow in there

Link to comment
On 4/4/2018 at 8:58 PM, Stupifier said:

Made this question easier to digest:

In SpaceInvaderOne video (gridrunner), he is able to Copy/Paste/Delete from a Mounted Cloud Drive using Krusader. I can do this too and it works fine.

 

I get permission errors when I try to do this through a Win10 VM though. The SpaceInvaderOne video shows successful Copy/Paste/Delete from a Mac VM, but not a Win VM. Wonder if anyone can help

 

Select the Tools tab > Docker Safe New Permissions. Click the 'Yes I want to do this' checkbox, then start.

 

In almost every case of accessing Docker created files outside a Docker image, that will fix the permission errors.

  • Like 1
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.