Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Server-side support for Linked Data Platform (LDP) with RDF.rb. To get started with LDP, see the LDP Primer.
This software ships with the following libraries:
RDF::LDP
--- contains the domain model and behavior for LDP Resources and
interaction models.Rack::LDP
--- a suite of Rack middleware for creating LDP servers based on
RDF::LDP
.Rack::LDP
.Lamprey is a basic LDP server. To start it, use:
$ gem install rdf-ldp
$ lamprey
Lamprey currently uses an in-memory repository, and is therefore not a
persistent datastore out of the box. Backends are swappable, using any
RDF::Repository
implementation with named graph (#context
) support. We are
working to complete a recommended, default backend and introduce startup
configuration. See /CONSTRAINED_BY.md and
/IMPLEMENTATION.md for details.
An ldp:BasicContainer
will be created at the address of your first GET
request if the backend store is empty. Note that if that request is made to the
server root, Sinatra will assume a trailing slash. You can also create an
initial container (or other resource) with HTTP PUT
.
$ curl -i http://localhost:4567
HTTP/1.1 200 OK
Content-Type: text/turtle
Link: <http://www.w3.org/ns/ldp#Resource>;rel="type",<http://www.w3.org/ns/ldp#RDFSource>;rel="type",<http://www.w3.org/ns/ldp#BasicContainer>;rel="type"
Allow: GET, POST, PUT, DELETE, OPTIONS, HEAD
Accept-Post: application/n-triples, text/plain, application/n-quads, text/x-nquads, application/ld+json, application/x-ld+json, application/rdf+json, text/html, text/n3, text/rdf+n3, application/rdf+n3, application/rdf+xml, text/csv, text/tab-separated-values, application/csvm+json, text/turtle, text/rdf+turtle, application/turtle, application/x-turtle, application/trig, application/x-trig, application/trix
Etag: "1B2M2Y8AsgTpgAmY7PhCfg==0"
Vary: Accept
X-Content-Type-Options: nosniff
Server: WEBrick/1.3.1 (Ruby/2.1.0/2013-12-25)
Date: Mon, 27 Jul 2015 23:19:06 GMT
Content-Length: 0
Connection: Keep-Alive
You can quickly create your own server with any framework supporting Rack. The simplest way to do this is with Rackup.
# ./config.ru
require 'rack/ldp'
use Rack::LDP::ContentNegotiation
use Rack::LDP::Errors
use Rack::LDP::Responses
use Rack::LDP::Requests
# Setup a repository and an initial container:
#
# - You probably want some persistent repository implementation. The example
# uses an in-memory repository.
# - You may not need an initial "base" container, if you handle create on PUT
# requests.
#
repository = RDF::Repository.new
RDF::LDP::Container.new(RDF::URI('http://localhost:9292/'), repository)
.create(StringIO.new(''), 'text/plain') if repository.empty?
app = proc do |env|
# Return a Rack response, giving an `RDF::LDP::Resource`-like object as the body.
# The `Rack::LDP` middleware marhsalls the request to the resource, builds the response,
# and handles conneg for RDF serializations (when the body is an `RDF::LDP::RDFSource`).
#
# @see https://www.rubydoc.info/github/rack/rack/master/file/SPEC#The_Response
[200, {}, RDF::LDP::Resource.find(RDF::URI(env['REQUEST_URI']), repository)]
end
run app
And run your server with:
$ rackup
RSpec shared examples for the required behaviors of LDP resource and container
types are included in rdf/ldp/spec
for use in customized implementations.
Running these example sets will help ensure LDP compliance for specialized
resource behaviors.
This test suite is provided provisionally and may be incomplete or overly strict. Please report issues encountered during its use.
require 'rdf/ldp/spec'
describe MyResource do
it_behaves_like 'a Resource'
end
describe MyRDFSource do
it_behaves_like 'an RDFSource'
end
# ...
describe MyIndirectContainer do
it_behaves_like 'an IndirectContainer'
end
We recommend running the official LDP testsuite, as integration tests in addition to the above examples.
Current compliance reports for Lamprey are located in /report.
Reports are generated by the LDP test suite. We use the
ldp_testsuite_wrapper
gem to run the suite and generate the tests.
As of version 2.1, this software depends on RDF.rb 3.2 or greater.
This repository uses Git Flow to mange development and release activity. All submissions must be on a feature branch based on the develop branch to ease staging and integration.
git diff --check
to make sure of this..gemspec
or VERSION
files. If you need to change them,
do so on your private branch only.CREDITS
file and the
corresponding list in the the README
. Alphabetical order applies.AUTHORS
file. If your contributions are significant
enough, be assured we will eventually add you in there.This software is released under a public domain waiver (Unlicense).
FAQs
Unknown package
We found that rdf-ldp demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer 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.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.