
Security News
Feross on the 10 Minutes or Less Podcast: Nobody Reads the Code
Socket CEO Feross Aboukhadijeh joins 10 Minutes or Less, a podcast by Ali Rohde, to discuss the recent surge in open source supply chain attacks.
nobone-sync
Advanced tools
A simple remote file sync tool for development.
It's also a simple example of how nokit works.
Install globally:
npm install -g nobone-sync
Install as lib dependency:
npm install nobone-sync
Start a remote file server:
nobone-sync -s
Start a local client to push change to remote server.
nobone-sync config.js
The defaults of config.js is:
module.exports = {
localDir: 'localDir',
// It decides the root path to upload to.
remoteDir: 'remoteDir',
// It decides the root accessible path.
rootAllowed: '/',
host: '127.0.0.1',
port: 8345,
pattern: '**',
pollingInterval: 500,
// If it is set, transfer data will be encrypted with the algorithm.
password: null,
algorithm: 'aes128',
onChange: function (type, path, oldPath) {
// It can also return a promise.
console.log('Write your custom code here')
}
}
The pattern can be a string or an array, it takes advantage of minimatch.
Some basic usages:
js, css and jpg: '**/*.@(js|css|jpg)'js and css file: ['**', '!**/*.@(js|css)']Use larger pollingInterval if there are too many files to be watched.
Push a file or directory to remote server:
nobone-sync -u localPath host[:port]/path/to/dir
localPath can be a file, a directory, or a glob pattern(glob pattern should use with quotation marks).
For example:
nobone-sync -u 'src/css/a.css' 1.2.3.4:8222/home/me/src/css
nobone-sync -u 'src/js/*.js' 1.2.3.4:8222/home/me/src/js
nobone-sync --password 3.14 -u 'src/js/*.js' 1.2.3.4:8222/home/me/src/js
Example:
var client = require('nobone-sync/client');
var server = require('nobone-sync/server');
var conf = {
localDir: 'localDir',
remoteDir: 'remoteDir',
rootAllowed: 'remoteDir',
host: '127.0.0.1',
port: 8345,
pattern: '**',
pollingInterval: 500,
password: '123456',
onChange: function (type, path, oldPath) {
console.log('Write your custom code here');
}
};
client(conf)
server(conf)
// Send local 'a.css' to remote '/home/jack/a.css'
client.send({
conf: conf,
type: 'create',
path: 'a.css',
remotePath: '/home/jack/a.css'
});
// Send single request. This request will let
// the server execute a js string " console.log 'OK' "
client.send({
conf: conf,
type: 'execute',
remotePath: '.js',
// The source code will run under the same directory of nobone-sync.
// You can require all the dependencies of nobone-sync.
source: `require('nokit').log('OK')`
})
.then(function (out) {
console.log(out);
// output => "OK\n"
});
The transfer protocol is based on http.
Only the {info} and {data} is used.
POST /{info} HTTP/1.1
{data}
info
It's a URI encoded json string. For example, the json is
{ type: 'create', path: '/home/u/a/b.js', mode: 0o777 },
then the final info string should be
%7B%22type%22%3A%22create%22%2C%22path%22%3A%22%2Fhome%2Fu%2Fa%2Fb.js%22%2C%22mode%22%3A511%7D.
data
It's raw binary. When the type is move, it should the target remote path.
When the type is create or modify, it should be binary file content. In other cases, it will be ignored.
encryption
If the password and algorithm is specified, the info and the data should encrypted by them.
error
If operation failed the server will return http status code 200, 211, 400, 403, 404 or 500.
Why not use Samba or sshfs?
If you search text content in a large project via Samba, it can be very slow.
Why not svn, git?
Use scm is somehow slow, and deploy a general scm server on a development machine is not funny.
Why not sftp?
It depends on ssh, for example, in Baidu, direct access to development machine via ssh is blocked.
Why ftp?
At most times, the IDE plugins are not programmable. You cannot use it as a library and take advantage of file change event.
This tool ignores what IDE your different team members are using, the config file can be source controled. They don't have to waste time to decide what plugins is best for the job.
Why http, not tcp?
I want the custom sync protocol as simple as possible, the http header is just suit for the action and path part of my protocol. Performance is not the bottleneck.
SSL?
I don't have any plan for it, for now simple symmetric cryto is enough for development. If you need it, please open an issue.
FAQs
A simple remote file sync tool for development.
The npm package nobone-sync receives a total of 14 weekly downloads. As such, nobone-sync popularity was classified as not popular.
We found that nobone-sync demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Socket CEO Feross Aboukhadijeh joins 10 Minutes or Less, a podcast by Ali Rohde, to discuss the recent surge in open source supply chain attacks.

Research
/Security News
Campaign of 108 extensions harvests identities, steals sessions, and adds backdoors to browsers, all tied to the same C2 infrastructure.

Security News
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.