https://github.com/variar/dropbox-fake
https://github.com/variar/dropbox-fake
Last synced: about 20 hours ago
JSON representation
- Host: GitHub
- URL: https://github.com/variar/dropbox-fake
- Owner: variar
- License: mit
- Created: 2015-11-12T22:05:21.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2016-09-06T08:55:10.000Z (almost 10 years ago)
- Last Synced: 2025-02-25T09:29:28.579Z (over 1 year ago)
- Language: JavaScript
- Size: 50.8 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# Dropbox Fake
[](https://travis-ci.org/variar/dropbox-fake)
Заглушка, реализующая подмножество Dropbox REST API v1, достаточное для
работы простых программ резервного копирования.
Для работы нужно каким-либо образом перенаправить https запросы к
api.dropboxapi.com, content.dropboxapi.com и www.dropbox.com
на эту заглушку (hosts, fiddler, nginx?)
## Установка и запуск
1. [Установите Node.js][] (возможно, потребуется настроить прокси для npm)
2. Перейдите в папку с исходным кодом приложения
3. Выполните `npm install --production`, чтобы скачать и установить зависимости.
4. Укажите в файле .env свои настройки портов (по-умолчанию 3000-http, 3001-https).
5. Вывполните `npm start`, чтобы запустить приложение.
Если используются стандартные порты (80, 443), то, возможно, потребуется
запускать с правами администратора.
### Настройка прокси для npm
1. `npm config set strict-ssl false`
2. `npm config set registry "http://registry.npmjs.org"`
3. `npm config set proxy http://user:password@proxy.server:1234`
Если в имени пользователя/пароле есть спец.символы,
то нужно преобразовать эти строки в urlencoded-форму.
## Запуск тестов
Вместе с заглушкой поставляется два набора тестов:
1. Юнит-тесты в папке `test`. Для из запуска используется фреймворк `mocha`
(копия устанавливается вместе с dev-зависимостями).
2. Функциональные тесты в папке `test-rest`. Эти тесты запускаются
как отдельное приложение, сами запускают сервер и выполняют ряд типичных
http-запросов.
Для запуска тестов нужно доустановить dev-зависимости с помощью команды
`npm install --dev` в папке с приложением.
Команда `npm test` запустит все тесты. Команда `npm run test-rest` - только функциональные.
## Авторизация пользователей по OAuth
В заглушке реализована авторизация по [OAuth 1.0][]. Процедура состоит из трех шагов:
1. get request_token -- получить временный токен для второго шага авторизации.
2. authorize -- открыть страницу в браузере, где пользователь поддтвердит запрос.
3. get access_token -- получить постоянный токен, поддвержденный пользователем.
В Dropbox на шаге 2 открывается веб-страница, где пользователь может
разрешить доступ или отказаться. В этой заглушке на шаге 2 открывается пустая
страница, а доступ автоматически разрешается.
Поведение может измениться в будущем.
OAuth в заглушке реализован корректно в части проверки валиндности request_token
на втором шаге и проверки авторизованности request_token на третьем шаге.
При этом не проверяются consumer_secret. В Dropbox они используются для
подключения различных приложений к одному аккаунту.
Для всех последующих запросов к api производится проверка соответствия токена
и секрета.
Токены по умолчанию хранятся в базе данных (`data\db.json`).
Если сохранять токены между запусками заглушики не требуется,
то нужно в файле `.env` закомментировать `SAVE_DB=true`.
## Хранение загруженных данных
Для каждого пользователя в процессе авторизации по OAuth генерируется
токен (guid). Для этого токена создаются папки в каталогах `data` и `chunks`.
В папку `data\` будут загружаться данные пользователя
(аналог папки приложения в Dropbox). В папку `chunks\` будут загружаться
частично загруженные файлы, которые по окончанию загрузки перемещаются в
`data\`.
Сервис сообщает, что пользователю доступно 2Гб данных. В реальности этот лимит
никак не проверяется.
## Работа по https
Для работы по https используется самоподписанный сертификат,
который выписан для адресов dropbox.com, www.dropbox.com,
api.dropboxapi.com, content.dropboxapi.com.
Сертификат, ключ и настройки для openssl лежат в папке `cert`.
Возможно, потребуется установить его в качестве доверенного сертификата
в вашей ОС.
## Имитация выключения API V1
Для тестирования реакции на отключения устаревшего API V1 нужно в файле .env
(либо в переменных окружения) выставить переменную DISABLE_V1=true.
В этом случае на все запросы будет возвращаться ошибка 400 с телом
{"error": "v1_retired"}.
[Установите Node.js]: https://nodejs.org/en/download/
[OAuth 1.0]: http://oauth.net/core/1.0/