Jump to content

Скопировать с FTP


Rumlin

Recommended Posts

Есть на неком устройстве ftp. Там появляются новые файлы, когда устройство регистрирует некое событие своими многочисленными входами.

Требуется периодически проверять появление новых файлов на этом ресурсе и новые копировать на машину с XP.

 

Желательно решение попроще из расчета на пользователя, который умеет только указать каталоги,и на что его можно быстро обучить. Может какая утилита есть с GUI?

 

Либо командный файл и в крайнем случае powershell - XP под админом заявила о недостатке прав. Пока изучаю варианты, не стал разбираться.


Я детей вообще то боюсь, милостивый мой государь, - шумливы, жестоки и себялюбивы, а коли дети правят державой? ©Юлиан Семёнов

Ничего не делается к лучшему © Борис Раушенбах

Люди, люди — это самое главное. Люди дороже даже денег. © Ф.М. Достоевский

Link to comment
Share on other sites

Почему-то сразу напрашивается rsync или wget -m c запуском по cron, ну или что там у XP ..

«Украинский народ заслуживает того, чтобы определять своё будущее без вмешательства извне. И именно это Соединённые Штаты пытаются сделать». © Джон Бреннан (главный советник президента США Барака Обамы по борьбе с терроризмом)

«Сибирь слишком большая, чтобы принадлежать одному государству» © Кондолиза Райс (госсекретарь США)

Link to comment
Share on other sites

Правда не уверен, можно ли эту задачу решить чисто в гуе

Раньше (под Windows) для автоматизации таких вещей, у меня была любимая утилита nnCron , там была куча сетевых скриптов/плагинов , но её кажется давно забросили, и под win7 у неё уже были проблемы , но до этого здорово выручала ...

«Украинский народ заслуживает того, чтобы определять своё будущее без вмешательства извне. И именно это Соединённые Штаты пытаются сделать». © Джон Бреннан (главный советник президента США Барака Обамы по борьбе с терроризмом)

«Сибирь слишком большая, чтобы принадлежать одному государству» © Кондолиза Райс (госсекретарь США)

Link to comment
Share on other sites

Поддержу WinSCP, лучше ничего пока не придумали, тем более что он freeware. И да, русский интерфейс присутствует.

В действительности всё выглядит иначе, чем на самом деле.

http://simferopol.in/uploads/1537386348/gallery_9612_136_8821.png

Link to comment
Share on other sites

Как раз добрался в поиске до winscp https://winscp.net/eng/docs/guide_automation

Посмотрим.


Я детей вообще то боюсь, милостивый мой государь, - шумливы, жестоки и себялюбивы, а коли дети правят державой? ©Юлиан Семёнов

Ничего не делается к лучшему © Борис Раушенбах

Люди, люди — это самое главное. Люди дороже даже денег. © Ф.М. Достоевский

Link to comment
Share on other sites

winscp, lftp - синхронизация по расписанию или команде.

 

если надо по событию (появление файла) - то есть, не гость время от времени запрашивает, а устройство верещит - то хз, может, заставить устройство слать команду по сетке ("есть новое, скачайте")? Ну или что-нибудь, например, относительный путь и имя файла слать куда-нибудь широковещательно. а на это будет реагировать гость и лезть за файлом.

- Что они хотят? 
- Ку они хотят…

Link to comment
Share on other sites

Еще вариант - примаунтить удаленный фтп как диск в виндовсе и пользоваться любыми средствами синхронизации
Link to comment
Share on other sites

Инквизитор, ну тогда уж проще что бы устройство закидывало куда нибудь (но только не на Марс, хватит уже :) ) эти самые файлы, как вариант на мыло, ну или складывало бы в отдельный каталог.

В действительности всё выглядит иначе, чем на самом деле.

http://simferopol.in/uploads/1537386348/gallery_9612_136_8821.png

Link to comment
Share on other sites

Как раз добрался в поиске до winscp https://winscp.net/eng/docs/guide_automation

Посмотрим.

Реконы лечишь ?

Не любо - не слушай, а врать не мешай !

"Величайшей ошибкой было бы думать, " © В. И. ЛЕНИН ПСС том 34, стр. 244.

", было бы величайшей ошибкой думать," © В. И. ЛЕНИН ПСС том 42, стр. 74.

"поругаешь власть — попадаешь под закон об оскорблении, похвалишь власть — попадаешь под закон о фейковых новостях" © В. Матвиенко

Link to comment
Share on other sites

На winscp нашелся скрипт, который работает после исправления опечатки на оффсайте.

https://winscp.net/eng/docs/script_download_files_to_same_folder

 

@echo off
set TMPPATH=%temp%\csvtmp\
mkdir "%TMPPATH%"
winscp.com /command ^
   "open sftp://user:password@example.com/" ^
   "get ""/remote/path/*"" -filemask=*.txt ""%TMPPATH%""" ^
   "exit"
for /r "%TMPPATH%" %%f in ("*.*") do move "%%f" "C:\local\path\"
rd /s /q "%TMPPATH%"

 

Надо посмотреть команду synchronize (Синхронизировать папку на сервере с локальной) может то что надо.


Я детей вообще то боюсь, милостивый мой государь, - шумливы, жестоки и себялюбивы, а коли дети правят державой? ©Юлиан Семёнов

Ничего не делается к лучшему © Борис Раушенбах

Люди, люди — это самое главное. Люди дороже даже денег. © Ф.М. Достоевский

Link to comment
Share on other sites

На winscp нашелся скрип

Не понятно зачем оно всё это делает через временную папку и чем в данном случае хуже wget --mirror , который скачает только новые файлы, а не всё скопом.

 

 

GNU Wget 1.17.1, программа автоматического получения файлов по сети.

Использование: wget [КЛЮЧ]... ...

 

Обязательные аргументы для длинных параметров являются обязательными и для коротких параметров.

 

Запуск:

-V, --version показать версию Wget и завершить работу

-h, --help показать эту справку

-b, --background после запуска перейти в фоновый режим

-e, --execute=КОМАНДА выполнить команду в стиле «.wgetrc»

 

Журналирование и входной файл:

-o, --output-file=ФАЙЛ записывать сообщения в ФАЙЛ

-a, --append-output=ФАЙЛ дописывать сообщения в конец ФАЙЛА

-d, --debug показать много отладочной информации

-q, --quiet ничего не выводить

-v, --verbose показывать подробные сведения (по умолчанию)

-nv, --no-verbose отключить вывод подробных сведений (не полностью)

--report-speed=ТИП единицы измерения пропускной способности

определить ТИПОМ. ТИП может быть равно bits

-i, --input-file=ФАЙЛ загрузить URL-ы согласно локальному

или внешнему ФАЙЛУ

-F, --force-html считать, что входной файл — HTML

-B, --base=URL считать, что ссылки из входного файла (-i -F)

указаны относительно URL

--config=ФАЙЛ задать файл настроек

--no-config не читать файлы настроек

--rejected-log=ФАЙЛ протоколировать причины отброса URL в ФАЙЛ

 

Загрузка:

-t, --tries=ЧИСЛО установить ЧИСЛО повторных попыток

(0 без ограничения)

--retry-connrefused повторять, даже если в подключении отказано

-O, --output-document=ФАЙЛ записывать документы в ФАЙЛ

-nc, --no-clobber пропускать загрузки, которые приведут к

загрузке уже существующих файлов

(и их перезаписи)

-c, --continue возобновить загрузку частично загруженного

файла

--start-pos=СМЕЩЕНИЕ начинать загрузку со СМЕЩЕНИЯ (считается с 0)

--progress=ТИП выбрать тип индикатора выполнения

--show-progress показывать индикатор выполнения в любом

режиме подробности

-N, --timestamping не загружать повторно файлы, только если они

не новее, чем локальные

--no-use-server-timestamps не использовать проверку

if-modified-since для запросов в режиме учёта

меток времени

--no-use-server-timestamps don't set the local file's timestamp by

the one on the server

-S, --server-response вывод ответа сервера

--spider ничего не загружать

-T, --timeout=СЕКУНДЫ установка значений всех тайм-аутов равными

числу СЕКУНД

--dns-timeout=СЕК установка тайм-аута поиска в DNS в СЕК

--connect-timeout=СЕК установка тайм-аута подключения в СЕК

--read-timeout=СЕК установка тайм-аута чтения в СЕК

-w, --wait=СЕКУНДЫ пауза в СЕКУНДАХ между загрузками

--waitretry=СЕКУНДЫ пауза в 1..СЕКУНДЫ между повторными

попытками загрузки

--random-wait пауза в 0.5*WAIT...1.5*WAIT секунд

между загрузками

--no-proxy явно выключить прокси

-Q, --quota=ЧИСЛО установить величину квоты загрузки в ЧИСЛО

--bind-address=АДРЕС привязать АДРЕС (имя компьютера или IP)

локального компьютера

--limit-rate=СКОРОСТЬ ограничить СКОРОСТЬ загрузки

--no-dns-cache отключить кэширование DNS-запросов

--restrict-file-names=ОС использовать в именах файлов символы,

допустимые в ОС

--ignore-case игнорировать регистр при сопоставлении

файлов и/или каталогов

-4, --inet4-only подключаться только к адресам IPv4

-6, --inet6-only подключаться только к адресам IPv6

--prefer-family=СЕМЕЙСТВО подключаться сначала к адресам указанного

семейства (может быть IPv6, IPv4 или ничего)

--user=ПОЛЬЗОВАТЕЛЬ установить и ftp- и http-пользователя в

ПОЛЬЗОВАТЕЛЬ

--password=ПАРОЛЬ установить ftp- и http-пароль в ПАРОЛЬ

--ask-password запрашивать пароли

--no-iri выключить поддержку IRI

--local-encoding=КДР использовать КДР как локальную кодировку

для IRI

--remote-encoding=КДР использовать КДР как удалённую кодировку

по умолчанию

--unlink удалить файл перед затиранием

 

Каталоги:

-nd, --no-directories не создавать каталоги

-x, --force-directories принудительно создавать каталоги

-nH, --no-host-directories не создавать каталоги как на узле

--protocol-directories использовать имя протокола в каталогах

-P, --directory-prefix=ПРЕФИКС сохранять файлы в ПРЕФИКС/..

--cut-dirs=ЧИСЛО игнорировать ЧИСЛО компонентов удалённого

каталога

 

Опции HTTP:

--http-user=ПОЛЬЗОВ. установить http-пользователя в ПОЛЬЗОВАТЕЛЬ

--http-password=ПАРОЛЬ установить http-пароль в ПАРОЛЬ

--no-cache отвергать кэшированные сервером данные

--default-page=ИМЯ изменить имя страницы по умолчанию (обычно

это «index.html»)

-E, --adjust-extension сохранять документы HTML/CSS с надлежащими

расширениями

--ignore-length игнорировать поле заголовка «Content-Length»

--header=СТРОКА вставить СТРОКУ между заголовками

--max-redirect максимально допустимое число перенаправлений

на страницу

--proxy-user=ПОЛЬЗОВ. установить ПОЛЬЗОВАТЕЛЯ в качестве имени

пользователя для прокси

--proxy-password=ПАРОЛЬ установить ПАРОЛЬ в качестве пароля для

прокси

--referer=URL включить в HTTP-запрос заголовок «Referer: URL»

--save-headers сохранять HTTP-заголовки в файл

-U, --user-agent=АГЕНТ идентифицировать себя как АГЕНТ вместо

Wget/ВЕРСИЯ

--no-http-keep-alive отключить поддержание активности HTTP

(постоянные подключения)

--no-cookies не использовать кукисы

--load-cookies=ФАЙЛ загрузить кукисы из ФАЙЛА перед сеансом

--save-cookies=ФАЙЛ сохранить кукисы в ФАЙЛ после сеанса

--keep-session-cookies загрузить и сохранить кукисы сеанса

(непостоянные)

--post-data=СТРОКА использовать метод POST; отправка СТРОКИ в

качестве данных

--post-file=ФАЙЛ использовать метод POST; отправка содержимого

ФАЙЛА

--method=HTTPMethod использовать метод «HTTPMethod» в заголовке

--body-data=СТРОКА отправка СТРОКИ в качестве данных;

ДОЛЖЕН быть указан параметр --method

--body-file=ФАЙЛ отправка содержимого ФАЙЛА;

ДОЛЖЕН быть указан параметр --method

--content-disposition учитывать заголовок Content-Disposition

при выборе имён для локальных файлов

(ЭКСПЕРИМЕНТАЛЬНЫЙ)

--content-on-error выводить принятые данные при ошибках сервера

--auth-no-challenge отправлять информацию об аутентификации

Basic HTTP не дожидаясь первого ответа

сервера

 

Опции HTTPS (SSL/TLS):

--secure-protocol=ПР выбор безопасного протокола: auto, SSLv2,

SSLv3, TLSv1 и PFS

--https-only переходить только по безопасным ссылкам HTTPS

--no-check-certificate не проверять сертификат сервера

--certificate=FILE файл сертификата пользователя

--certificate-type=ТИП тип сертификата пользователя: PEM или DER

--private-key=ФАЙЛ файл секретного ключа

--private-key-type=ТИП тип секретного ключа: PEM или DER

--ca-certificate=ФАЙЛ файл с набором CA

--ca-directory=КАТ каталог, в котором хранится список CA

--crl-file=ФАЙЛ файл с набором CRL

--random-file=ФАЙЛ файл со случайными данными для SSL PRNG

--egd-file=ФАЙЛ файл, определяющий сокет EGD со случайными данными

 

Параметры HSTS:

--no-hsts отключить HSTS

--hsts-file путь к базе данных HSTS (заменит значение

по умолчанию)

 

Опции FTP:

--ftp-user=ПОЛЬЗОВАТЕЛЬ установить ftp-пользователя в ПОЛЬЗОВАТЕЛЬ

--ftp-password=ПАРОЛЬ установить ftp-пароль в ПАРОЛЬ

--no-remove-listing не удалять файлы «.listing»

--no-glob выключить маски для имён файлов FTP

--no-passive-ftp отключить «пассивный» режим передачи

--preserve-permissions сохранять права доступа удалённых файлов

--retr-symlinks при рекурсии загружать файлы по ссылкам

(не каталоги)

 

Параметры FTPS:

--ftps-implicit безусловно использовать FTPS (порт

по умолчанию — 990)

--ftps-resume-ssl возобновлять сеанс SSL/TLS, начатый

в канале управления, при открытии

канала данных

--ftps-clear-data-connection шифровать только канал управления;

данные не шифруются

--ftps-fallback-to-ftp вернуться к FTP, если FTPS не

поддерживается сервером

Параметры WARC:

--warc-file=ФАЙЛ записать данные запроса/ответа в файл .warc.gz

--warc-header=СТРОКА вставить СТРОКУ в запись warcinfo

--warc-max-size=ЧИСЛО максимальный размер файлов WARC равен ЧИСЛУ

--warc-cdx записать индексные файлы CDX

--warc-dedup=ФАЙЛ не сохранять записи, перечисленные в файле CDX

--no-warc-compression не сжимать файлы WARC с помощью GZIP

--no-warc-digests не вычислять дайджесты SHA1

--no-warc-keep-log не сохранять файл журнала в записи WARC

--warc-tempdir=КАТАЛОГ расположение для временных файлов,

создаваемых процедурой записи WARC

 

Рекурсивная загрузка:

-r, --recursive включение рекурсивной загрузки

-l, --level=ЧИСЛО глубина рекурсии (inf и 0 — бесконечность)

--delete-after удалять локальные файлы после загрузки

-k, --convert-links делать ссылки локальными в загруженном

HTML или CSS

--convert-file-only convert the file part of the URLs only (usually known as the basename)

--backups=N перед записью файла X, ротировать до N

резервных файлов

-K, --backup-converted перед преобразованием файла X делать резервную

копию в виде X.orig

-m, --mirror короткий параметр, эквивалентный

-N -r -l inf --no-remove-listing

-p, --page-requisites загрузить все изображения и проч., необходимые

для отображения HTML-страницы

--strict-comments включить строгую (SGML) обработку комментариев

HTML

 

Разрешения/запреты при рекурсии:

-A, --accept=СПИСОК список разрешённых расширений

через запятую

-R, --reject=СПИСОК список запрещённых расширений,

разделённых запятыми.

--accept-regex=РЕГВЫР регулярное выражение для разрешённых URL

--reject-regex=РЕГВЫР регулярное выражение для запрещённых URL

--regex-type=ТИП тип регулярного выражения (posix|pcre)

-D, --domains=СПИСОК список разрешённых доменов,

через запятую

--exclude-domains=СПИСОК список запрещённых доменов,

через запятую

--follow-ftp следовать по ссылкам FTP в HTML-документах

--follow-tags=СПИСОК список используемых тегов HTML,

через запятую

--ignore-tags=СПИСОК список игнорируемых тегов HTML,

через запятую

-H, --span-hosts заходить на чужие узлы при рекурсии

-L, --relative следовать только по относительным ссылкам

-I, --include-directories=СПИСОК список разрешённых каталогов

--trust-server-names использовать имя, указанное в перенаправляющем URL,

в качестве последнего компонента.

-X, --exclude-directories=СПИСОК список исключаемых каталогов

-np, --no-parent не подниматься в родительский каталог

 

 

«Украинский народ заслуживает того, чтобы определять своё будущее без вмешательства извне. И именно это Соединённые Штаты пытаются сделать». © Джон Бреннан (главный советник президента США Барака Обамы по борьбе с терроризмом)

«Сибирь слишком большая, чтобы принадлежать одному государству» © Кондолиза Райс (госсекретарь США)

Link to comment
Share on other sites

Не понятно зачем оно всё это делает через временную папку

 

move :)

 

и чем в данном случае хуже wget

 

Изначальное условие... :)

Желательно решение попроще из расчета на пользователя, который умеет только указать каталоги,и на что его можно быстро обучить. Может какая утилита есть с GUI?

 

В действительности всё выглядит иначе, чем на самом деле.

http://simferopol.in/uploads/1537386348/gallery_9612_136_8821.png

Link to comment
Share on other sites

move

Это как-то разъясняет мой вопрос?

Изначальное условие...

Постом выше описан батник, который к гую, даже с большой натяжкой отношения не имеет ...

«Украинский народ заслуживает того, чтобы определять своё будущее без вмешательства извне. И именно это Соединённые Штаты пытаются сделать». © Джон Бреннан (главный советник президента США Барака Обамы по борьбе с терроризмом)

«Сибирь слишком большая, чтобы принадлежать одному государству» © Кондолиза Райс (госсекретарь США)

Link to comment
Share on other sites

Это как-то разъясняет мой вопрос?

 

Хммм.

Согласен, пожалуй не объясняет. :blush:

 

Постом выше описан батник, который к гую, даже с большой натяжкой отношения не имеет ...

 

Тоже пожалуй соглашусь (какой я сегодня к вечеру покладистый http://arcanumclub.ru/smiles/smile102.gif), однако хочу отметить одну деталь, в WinSCP существует возможность создания пользовательских команд (видимо Rumlin до этой опции пока не добрался), и уже при загруженной программе выполнить необходимые действия одним нажатием кнопки. Естественно всё это происходит в графическом интерфейсе.

 

Ну что, так годится? :)

В действительности всё выглядит иначе, чем на самом деле.

http://simferopol.in/uploads/1537386348/gallery_9612_136_8821.png

Link to comment
Share on other sites

 

 

Надо посмотреть команду synchronize (Синхронизировать папку на сервере с локальной) может то что надо.

 

 

Именно. Лучше использовать скриптовый язык самого winscp и команду synchronize, без танцев с бубном с временной папкой

Link to comment
Share on other sites

Гуй для задачи совсем не нужен! Идеально - запуск скрипта по расписанию (событию) в фоне, как служба.

Решение уже было на nncron

Не любо - не слушай, а врать не мешай !

"Величайшей ошибкой было бы думать, " © В. И. ЛЕНИН ПСС том 34, стр. 244.

", было бы величайшей ошибкой думать," © В. И. ЛЕНИН ПСС том 42, стр. 74.

"поругаешь власть — попадаешь под закон об оскорблении, похвалишь власть — попадаешь под закон о фейковых новостях" © В. Матвиенко

Link to comment
Share on other sites

  • 1 month later...

Другой вопрос по доступу к сетевым ресурсам из консоли

Для того, чтобы заставит удаленный компьютер использовать СВОЮ переменную среды %COMPUTERNAME%, надо запускать так:

 

psexec.exe @c:\ip-list.txt -d -n 12 systeminfo > \\share\audit\%%COMPUTERNAME%%.txt

https://habrahabr.ru/post/138400/

Вот так не работает. Мне надо чтобы точно также создавался файл с именем компьютера, где выполнялась команда.


Я детей вообще то боюсь, милостивый мой государь, - шумливы, жестоки и себялюбивы, а коли дети правят державой? ©Юлиан Семёнов

Ничего не делается к лучшему © Борис Раушенбах

Люди, люди — это самое главное. Люди дороже даже денег. © Ф.М. Достоевский

Link to comment
Share on other sites

Вот так не работает.

А в чём проблема? %COMPUTERNAME% - этож стандартная переменная окружения, и если вы сами что-то не накосячили, она и будет передавать имя хоста.

 

P.S. Понял, в той команде будет создаваться файл с именем локального хоста.

«Украинский народ заслуживает того, чтобы определять своё будущее без вмешательства извне. И именно это Соединённые Штаты пытаются сделать». © Джон Бреннан (главный советник президента США Барака Обамы по борьбе с терроризмом)

«Сибирь слишком большая, чтобы принадлежать одному государству» © Кондолиза Райс (госсекретарь США)

Link to comment
Share on other sites

ага, варианты с %% и с ^% тоже не работают.


Я детей вообще то боюсь, милостивый мой государь, - шумливы, жестоки и себялюбивы, а коли дети правят державой? ©Юлиан Семёнов

Ничего не делается к лучшему © Борис Раушенбах

Люди, люди — это самое главное. Люди дороже даже денег. © Ф.М. Достоевский

Link to comment
Share on other sites

По ходу надо делать скрипт с циклом по каждому хосту , парсить первую строку, и подставлять имя хоста в имя файла для выхлопа ...

«Украинский народ заслуживает того, чтобы определять своё будущее без вмешательства извне. И именно это Соединённые Штаты пытаются сделать». © Джон Бреннан (главный советник президента США Барака Обамы по борьбе с терроризмом)

«Сибирь слишком большая, чтобы принадлежать одному государству» © Кондолиза Райс (госсекретарь США)

Link to comment
Share on other sites

похоже на то.

Просто непонятно почему статья на хабре и никто не написал что это неправильно.


Я детей вообще то боюсь, милостивый мой государь, - шумливы, жестоки и себялюбивы, а коли дети правят державой? ©Юлиан Семёнов

Ничего не делается к лучшему © Борис Раушенбах

Люди, люди — это самое главное. Люди дороже даже денег. © Ф.М. Достоевский

Link to comment
Share on other sites

Млин , перечитал и кажется понял, просто надо команду в кавычки взять : psexec.exe @c:\ip-list.txt -d -n 12 "systeminfo > \\share\audit\%COMPUTERNAME%.txt"

проверить не могу, windows нет под рукой :rolleyes2:

так по идее всё катит, а без кавычек часть после перенаправления в файл ">" на локальном хосте выполнялась

 

аргументы
Передаваемые аргументы (обратите внимание, что пути файлов должны указываться как локальные пути в целевой системе).
Чтобы задать имя приложения, которое содержит пробелы, используйте кавычки, например psexec \\marklap "c:\длинное имя\app.exe". Введенные данные передаются в удаленную систему при нажатии клавиши «Ввод», для завершения удаленного процесса нужно нажать сочетание клавиш Ctrl-C.
Если имя пользователя не задано, то удаленный процесс запускается из той же учетной записи, что и программа PsExec. Однако поскольку удаленный процесс является олицетворением, то он не будет иметь доступа к сетевым ресурсам удаленной системы. Если имя пользователя задано, то удаленный процесс запускается из указанной учетной записи и получает доступ к тем же сетевым ресурсам удаленной системы, что и данная учетная запись. Учтите, что пароль передается в удаленную систему в виде открытого текста.
При обращении к локальной системе эту версию программы PsExec можно использовать вместо программы Runas, поскольку для программы PsExec не требуются права администратора.

- https://technet.microsoft.com/ru-ru/sysinternals/bb897553.aspx

«Украинский народ заслуживает того, чтобы определять своё будущее без вмешательства извне. И именно это Соединённые Штаты пытаются сделать». © Джон Бреннан (главный советник президента США Барака Обамы по борьбе с терроризмом)

«Сибирь слишком большая, чтобы принадлежать одному государству» © Кондолиза Райс (госсекретарь США)

Link to comment
Share on other sites

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.   Paste as plain text instead

  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.

Loading...
×
×
  • Create New...