SlideShare a Scribd company logo
Build
Resource Server & Client
for OCF Cloud
ryan.kim@data-alliance.com
2018. 8. 30
Cloud Architecture
OCF Cloud :
Resource Directory is used for storing and finding
resources.
Account is used for storing User & Device info.
Message Queue is based on Kafka and used for
message queue.
Cloud Interface process uses Device Server
System module to handle devices.
(*You should put Interface server address, credential
to run sample.)
Resource Server (Controlee) : Things Device
eg> TV, Refrigerator, Air Conditioner, Air Purifier,
Dishwasher...
Resource Client (Controller) : Remote Control App
Build and run IoTivity projects
Install build env
$ sudo apt-get install build-essential git scons libtool autoconf valgrind doxygen wget unzip chrpath
Install development support for external libraries:
$ sudo apt-get install libboost-dev libboost-program-options-dev libboost-thread-dev uuid-dev
libexpat1-dev libglib2.0-dev libsqlite3-dev libcurl4-gnutls-dev
How to build IoTivity projects
$ git clone https://gerrit.iotivity.org/gerrit/p/iotivity.git -b 1.3.1 iotivity-v1.3.1
$ cd iotivity-v1.3.1
$ git clone https://github.com/01org/tinycbor.git extlibs/tinycbor/tinycbor -b v0.4.1
$ git clone https://github.com/ARMmbed/mbedtls.git extlibs/mbedtls/mbedtls -b mbedtls-2.4.2
$ scons cloud/ WITH_TCP=yes RELEASE=yes TARGET_TRANSPORT=IP WITH_CLOUD=yes
WITH_MQ=PUB,SUB SECURED=0 -j 2
Two more Extlib needed.
-j N, --jobs=N Allow N jobs at once.
Sample source code folder and Build output folder
Sample source code folder
iotivity-v1.3.1/cloud/samples/client/airconditioner/
Build output folder
iotivity-v1.3.1/out/linux/x86_64/release/cloud/samples/client/

Recommended for you

OSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at Netflix
OSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at NetflixOSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at Netflix
OSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at Netflix

This document discusses Netflix's API ecosystem built using Scala, Scalatra, and Swagger. It summarizes Netflix's use of these technologies to build APIs that power their consumer electronics partner portal and enable certification of Netflix ready devices. It describes how the APIs provide a single source of truth for all device data at Netflix and correlate streaming quality metrics. It then discusses aspects of the architecture including the manager layer containing business logic, HTTP layer for handling requests/responses, and use of Scala, Scalatra, Swagger, and deployment process including immutable infrastructure.

restfulswaggernetflix
QA Fest 2019. Saar Rachamim. Developing Tools, While Testing
QA Fest 2019. Saar Rachamim. Developing Tools, While TestingQA Fest 2019. Saar Rachamim. Developing Tools, While Testing
QA Fest 2019. Saar Rachamim. Developing Tools, While Testing

Our daily work is comprised of testing a product and improve its quality. However, here and there, we can come to a state where we find a need to build a tool, that can make our work easierbetter. I will share from my experience when I found myself in a situation where building a tool was needed. We will start with a web application that allows you to know when a food delivery you ordered arrives to the office, and then we will focus on a tool that test the performance of an app from the UI side. We will do a live demo for both of them.

#qafest#qafest2019
Learning Dtrace
Learning DtraceLearning Dtrace
Learning Dtrace

DTrace is a comprehensive dynamic tracing framework created by Sun Microsystems for troubleshooting kernel and application problems on production systems in real time. It provides probes in the operating system and applications to monitor events, collects and aggregates data, and provides tools to analyze the data. DTrace can be used on Unix-like systems like Solaris, Linux, macOS, and in Node.js applications through a DTrace provider. It allows gathering insights about the system and application behavior without restarting or slowing the system.

node.jsdtrace
Run Resource Server ( Controlee Device : TV, Aircon, Dishwasher . . . )
Run Resource Server
$ cd /out/linux/x86_64/release/cloud/samples/client/
$ ./aircon_controlee
Put "[host-ipaddress:port] [authprovider] [authcode]" for sign-up and sign-in and publish resources
Put "[host-ipaddress:port] [uid] [accessToken] 1" for sign-in and publish resources
Interface server address (host-ipaddress)
You should put Interface server address, credential to run sample.
Refer the Interface server address and port number below.
35.227.183.218:5683 ⇐ For OCF Korea Hackathon( ~ 2018. 9. 31), Non secured, Based on v1.3.1
35.221.81.241:5683 ⇐ For Public Test Purpose( ~ 2019. 08. 27), Secured, Based on v1.3.1
Device Sign-up using OAuth 2 Auth Code
Device Sign-up using OAuth 2 Auth Code
To register device, you need 'Auth Code' provided by OAuth 2 provider like Facebook, Google or Github.
IoTivity Cloud project includes 'GitHub' account plugin. To get a 'Auth Code' from 'GitHub' you can make
request to below URL.
https://github.com/login?return_to=/login/oauth/authorize?client_id=378c7c6a465fa4d37816&redirect_uri=htt
p://35.227.183.170:8081/oauth_callback
Once you signed-in, you'll be redirected to other web page include 'Auth Code' in the redirected URL.
http://www.example.com/oauth_callback/?code=3a03a37366c3678aa634
The 'code' part in the URI is the 'Auth Code' from 'GitHub'.
We'll use this code to register and sign-in device.
Device Sign-up using OAuth 2 Auth Code

Recommended for you

Durable functions
Durable functionsDurable functions
Durable functions

This document provides examples and documentation on Azure Durable Functions patterns and concepts. It includes examples of orchestrator and activity functions, orchestration triggers, and common patterns like function chaining, fan-out/fan-in, and asynchronous HTTP responses. It also covers durable function concepts such as the control queue, work item queue, and history table.

azurefunctionsdurable functions
Nko workshop - node js crud & deploy
Nko workshop - node js crud & deployNko workshop - node js crud & deploy
Nko workshop - node js crud & deploy

The document provides an overview of a NodeJS CRUD and deployment course. The course outline includes: setting up a NodeJS environment on SmartOS with MySQL and Git in 3 minutes; tools for cloud development like SSH, SCP, and Git; building a simple web server with authorization using Passport and CRUD functionality with MySQL; and advanced topics like load balancing for cloud services. The course also provides a Micloud server for hands-on labs and sample projects.

node.jspassport-googlemysql
Java client socket-20070327
Java client socket-20070327Java client socket-20070327
Java client socket-20070327

The document discusses the process and code for building a client socket application in Java. It covers establishing a connection to a server, obtaining socket information, sending and receiving data, and closing the connection. An example client code is provided that connects to a sample server, receives data as bytes, and prints the response. The client creates a socket, gets input/output streams, reads server data into a byte array, and closes the connection when finished.

Run Resource Server ( Controlee Device : TV, Aircon, Dishwasher . . . )
Run Resource Server - Sign Up (To get the UID & AccessToken for the first time.)
$ ./aircon_controlee 35.227.183.218:5683 github 3a03a37366c3678aa634
Auth response received code: 4
accesstoken: de42093f01fd35645bd6038139213c56a6fca3e6
certificate: [..CertInfo..]
expiresin: -1
redirecturi: coap+tcp://127.0.0.1:5683
refreshtoken: (null)
sid: 2a6085d1-815d-4277-baba-4e4e4df91308
tokentype: bearer
uid: 0cf89f61-d999-48cf-857f-73918a37531c
PUT 1/0 to turn on/off air conditioner for observe testing, q to terminate
Publish resource response received, code: 4
Run Resource Server ( Controlee Device : TV, Aircon, Dishwasher . . . )
Run Resource Server - Sign In (After obtaining the UID & AccessToken)
$ ./aircon_controlee 35.227.183.218:5683 0cf89f61-d999-48cf-857f-73918a37531c
de42093f01fd35645bd6038139213c56a6fca3e6
Auth response received code: 4
expiresin: -1
Registering resources to platform...
Publishing resources to cloud result: 0 Waiting Publish default resource response from cloud
result: 0 Waiting Publish user resource response from cloud
Publish resource response received, code: 4
PUT 1/0 to turn on/off air conditioner for observe testing, q to terminate
Publish resource response received, code: 4
Run as a Service (optional)
example service file below
$ vi aircon.service
[Unit]
Description=OCF Airconditioner
Requires=network-online.target
[Service]
Type=simple
RestartSec=3s
User=pi
Group=pi
ExecStart=/home/pi/aircon/airconditioner_controlee 35.227.183.218:5683 0cf89f61-d999-48cf-857f-73918a37531c
de42093f01fd35645bd6038139213c56a6fca3e6
WorkingDirectory=/home/pi/aircon
Restart=always
[Install]
WantedBy=multi-user.target
Run as a Service (optional)
Start service
$ systemctl enable aircon.service && systemctl start aircon.service
Restart service
$ systemctl restart aircon.service
Stop service
$ systemctl stop aircon.service && systemctl disable aircon.service
Service log
$ journalctl -u aircon.service -f

Recommended for you

Source Code for Dpilot
Source Code for Dpilot Source Code for Dpilot
Source Code for Dpilot

This document contains code for a file sharing application that allows users to upload files to Amazon S3 storage and send download links to recipients via email. It includes code for connecting to MongoDB and S3 databases, handling file uploads with Multer, generating signed URLs with AWS, sending emails with Nodemailer, and building APIs with Express. The React code handles form inputs, file previews, and confirming upload status.

nodejsmongodbhtml5
Dpilot Source Code With ScreenShots
Dpilot Source Code With ScreenShots Dpilot Source Code With ScreenShots
Dpilot Source Code With ScreenShots

Dpilot is a cloud based file transfer application that allows its user to upload data on cloud server and the receiver on the other hand can downlaod the data from the server. The Downlaod information is send to the receiver via mail service. Other Features include:- Secure Login system Easy data Access Lightening Fast Uploads and Downloads Connect with your Facebook Or Gmail Account for easy access

codesnodejshtml5
Programming with ZooKeeper - A basic tutorial
Programming with ZooKeeper - A basic tutorialProgramming with ZooKeeper - A basic tutorial
Programming with ZooKeeper - A basic tutorial

This document provides a tutorial on using ZooKeeper to implement basic distributed synchronization primitives like barriers and producer-consumer queues. It includes code examples for Barrier and Queue classes that extend a base SyncPrimitive class. The Barrier class allows processes to synchronize barrier entry and exit. The Queue class implements a distributed queue where producers can add elements and consumers can remove the oldest element. Both use ZooKeeper to coordinate access through ephemeral nodes and watches.

Run Resource Client ( Controller Device : Remote Controller App )
Run Resource Client - Sign Up (To get the UID & AccessToken for the first time.)
$ ./aircon_controller 35.227.183.218:5683 github 9d31d32e18c3e38bd559
Login/out response received code: 4
accesstoken: a0572063607baae269e5fdc336367d295f1efbdc
certificate: [..CertInfo..]
redirecturi: coap+tcp://127.0.0.1:5683
refreshtoken: (null)
sid: 2a6085d1-815d-4277-baba-4e4e4df91308
tokentype: bearer
uid: 0cf89f61-d999-48cf-857f-73918a37531c
Login/out response received code: 4
expiresin: -1
Finding airconditioner result: 0
Device found: /di/1a78ae17-3dc0-48f8-a51e-b19574de198b/oic/d
DI: 1a78ae17-3dc0-48f8-a51e-b19574de198b
PUT 1/0 to turn on/off air conditioner, q to terminate
Run Resource Client ( Controller Device : Remote Controller App )
Run Resource Client - Sign In (After obtaining the UID & AccessToken)
$ ./aircon_controller 35.227.183.218:5683 0cf89f61-d999-48cf-857f-73918a37531c
a0572063607baae269e5fdc336367d295f1efbdc
aircon_controlee.cpp (1)
int main(int argc, char *argv[])
{
if (argc != 4)
{
cout << "Put "[host-ipaddress:port] [authprovider] [authcode]" for sign-up and sign-in and publish resources"
<< endl;
cout << "Put "[host-ipaddress:port] [uid] [accessToken]" for sign-in and publish resources" <<
endl;
return 0;
}
. . .
aircon_controlee.cpp (2)
int main(int argc, char *argv[])
{
. . .
if (strlen(argv[2]) > 35)
{
accountMgr->signIn(argv[2], argv[3], &handleLoginoutCB);
g_callbackLock.wait(lock);
}
else
{
accountMgr->signUp(argv[2], argv[3], &handleLoginoutCB);
g_callbackLock.wait(lock);
accountMgr->signIn(g_uid, g_accesstoken, &handleLoginoutCB);
g_callbackLock.wait(lock);
}
. . .

Recommended for you

SPIFFE Meetup Tokyo #2 - Attestation Internals in SPIRE - Shingo Omura
SPIFFE Meetup Tokyo #2 - Attestation Internals in SPIRE - Shingo OmuraSPIFFE Meetup Tokyo #2 - Attestation Internals in SPIRE - Shingo Omura
SPIFFE Meetup Tokyo #2 - Attestation Internals in SPIRE - Shingo Omura

In SPIRE, attestation is the essential process because it certifies a node or workload, i.e. it asserts the identities of them. This talk describes how SPIRE implement this process and make it flexible. Moreover, it explains the detail of how spire-server and spire-agent (running at a node) interacts in the attestation process.

cloudidentityzero-trust
Browser-based Secure Remote Access for the Internet of Things
Browser-based Secure Remote Access for the Internet of ThingsBrowser-based Secure Remote Access for the Internet of Things
Browser-based Secure Remote Access for the Internet of Things

Secure remote access to the built-in web server of a device is one of the fundamental building blocks for the Internet of Things. my-devices.net enables easy and secure remote access, even if the device is located behind a NAT router or a firewall and does not have a public IP address.

remote accessdevicesinternet of things
Inversion Of Control
Inversion Of ControlInversion Of Control
Inversion Of Control

This document discusses dependency injection and inversion of control patterns. It explains that dependency injection frameworks like Angular and Ember use an inversion of control container to manage dependencies and instantiate classes with their dependencies already satisfied. The container owns and manages all class registrations and dependencies. When a class is looked up from the container, it is instantiated with all its dependencies injected. This decouples classes from their concrete dependencies and makes applications more modular and testable.

javascriptemberjsangular
aircon_controlee.cpp (3)
int main(int argc, char *argv[])
{
. . .
cout << "Registering resources to platform..." << endl;
AirConditionerResource airConditioner("/aircon/0", { "x.org.iotivity.ac" }, { DEFAULT_INTERFACE,
BATCH_INTERFACE, LINK_INTERFACE });
BinarySwitchResource binarySwitch("/power/0", { "oic.r.switch.binary" }, { DEFAULT_INTERFACE });
TemperatureResource temperature("/temperature/0", { "oic.r.temperature" }, { DEFAULT_INTERFACE });
FirmwareResource firmware("/firmware", { "x.org.iotivity.firmware" }, { DEFAULT_INTERFACE });
. . .
aircon_controlee.cpp (4)
int main(int argc, char *argv[])
{
. . .
result = OCPlatform::registerResource(airConditioner.m_handle,
uri, rt, itf,
bind(&AirConditionerResource::entityHandler
, &airConditioner, placeholders::_1),
OC_DISCOVERABLE);
. . .
result = OCPlatform::registerResource(binarySwitch.m_handle,
uri, rt, itf,
bind(&BinarySwitchResource::entityHandler
, &binarySwitch, placeholders::_1),
OC_OBSERVABLE);
aircon_controlee.cpp (5)
int main(int argc, char *argv[])
{
. . .
while (true)
{
switch (cmd[0])
{
case '1':
rep.setValue(string("value"), true);
binarySwitch.setBinarySwitchRepresentation(rep);
break;
case '0':
rep.setValue(string("value"), false);
binarySwitch.setBinarySwitchRepresentation(rep);
break;
}
}
aircon_controlee.cpp (6)
class BinarySwitchResource : public Resource //oic.r.switch.binary
{
private:
bool m_value;
void setBinarySwitchRepresentation(OCRepresentation &rep)
{
bool value;
if (rep.getValue("value", value))
{
m_value = value;
m_representation.setValue("value", m_value);
cout << "tttt" << "value: " << m_value << endl;
propagate();
}
}
#if defined(WIRINGPI)
if (m_value)
{
digitalWrite (DEVICE_PIN, HIGH);
}
else
{
digitalWrite (DEVICE_PIN, LOW);
}
#endif

Recommended for you

Hack ASP.NET website
Hack ASP.NET websiteHack ASP.NET website
Hack ASP.NET website

Hack an ASP .NET website? Hard, but possible! Presentation by Vladimir Kochetkov at Positive Hack Days

hackingpositive research.net
Score (smart contract for icon)
Score (smart contract for icon) Score (smart contract for icon)
Score (smart contract for icon)

1) SCORE is a smart contract platform on ICON that allows developers to write, deploy and interact with smart contracts using Python. 2) T-Bears is a SCORE development suite that provides tools to develop, test, deploy and interact with SCORE contracts. It includes a CLI, sample templates and supports local emulation of contract execution. 3) SCORE contracts are deployed to and run on the ICON blockchain. They can store data on-chain, be invoked by transactions to update state, and trigger events.

iconscoresmart contract
Automated reduction of attack surface using call graph enumeration
Automated reduction of attack surface using call graph enumerationAutomated reduction of attack surface using call graph enumeration
Automated reduction of attack surface using call graph enumeration

2018 2nd International Conference on Management Engineering, Software Engineering and Service Sciences (ICMSS) Jan 13-15, 2018 in Wuhan, China

aircon_controller.cpp (1)
int main(int argc, char *argv[])
{
if (argc != 4)
{
cout << "Put "[host-ipaddress:port] [authprovider] [authcode]" for sign-up and sign-in and publish resources"
<< endl;
cout << "Put "[host-ipaddress:port] [uid] [accessToken]" for sign-in and publish resources" <<
endl;
return 0;
}
. . .
aircon_controller.cpp (2)
int main(int argc, char *argv[])
{
. . .
if (strlen(argv[2]) > 35)
{
accountMgr->signIn(argv[2], argv[3], &handleLoginoutCB);
g_callbackLock.wait(lock);
}
else
{
accountMgr->signUp(argv[2], argv[3], &handleLoginoutCB);
g_callbackLock.wait(lock);
accountMgr->signIn(g_uid, g_accesstoken, &handleLoginoutCB);
g_callbackLock.wait(lock);
}
. . .
aircon_controller.cpp (3)
int main(int argc, char *argv[])
{
. . .
cout << "Finding airconditioner ";
result = OCPlatform::findResource(g_host, "/oic/res?rt=oic.wk.d",
static_cast<OCConnectivityType>(CT_ADAPTER_TCP | CT_IP_USE_V4),
&foundDevice, &errorFoundDevice);
cout << " result: " << result << endl;
. . . void foundDevice(shared_ptr<OC::OCResource> resource)
{
OCPlatform::findResource(g_host, searchQuery,
static_cast<OCConnectivityType>(CT_ADAPTER_TCP |
CT_IP_USE_V4),
&foundAirconditionerResource);
aircon_controller.cpp (4)
void foundAirconditionerResource(shared_ptr<OC::OCResource> resource)
{
. . .
resource->get(query, &getCollectionResource);
void getCollectionResource(const HeaderOptions &,
const OCRepresentation &rep, const int ecode)
{
g_binaryswitchResource = OCPlatform::constructResourceObject(g_host,
it->getUri(),
static_cast<OCConnectivityType>(CT_ADAPTER_TCP | CT_IP_USE_V4), true,

Recommended for you

Fiware io t_ul20_cpbr8
Fiware io t_ul20_cpbr8Fiware io t_ul20_cpbr8
Fiware io t_ul20_cpbr8

FIWARE IoT Hackathon at Campus Party Brazil 2015. Slides for Ultralight2.0 (virtual) devices. Carlos Ralli Ucendo

iotfiware
IoT on Raspberry PI v1.2
IoT on Raspberry PI v1.2IoT on Raspberry PI v1.2
IoT on Raspberry PI v1.2

Every wondered how to make your code physically interact with things in the real world? Got a home automation project in mind? In this presentation we will cover: o) How to get started with Raspberry Pi and C# o) The numerous sensors and actuators you can control o) How to navigate basic electronics o) Different interfaces and how to program them o) Demonstrations of devices at work o) Azure IoT Hub to control your code from the cloud and receive live inputs from your device in a Blazor application

iotazureblazor
Labs_BT_20221017.pptx
Labs_BT_20221017.pptxLabs_BT_20221017.pptx
Labs_BT_20221017.pptx

The document provides instructions for setting up a TI-RTOS project for the CC1352R wireless microcontroller. It describes creating a CCS project targeting the CC1352R, configuring compiler and linker settings, generating a system configuration file, and adding TI-RTOS and driver library files. The goal is to build a basic "hello world" project to demonstrate real-time operating system functionality on the CC1352R wireless microcontroller.

cc1352r
aircon_controller.cpp (5)
void turnOnOffSwitch(bool toTurn)
{
if (g_binaryswitchResource == nullptr)
{
cout << "Binary switch not found" << endl;
return;
}
OCRepresentation binarySwitch;
binarySwitch.setValue("value", toTurn);
QueryParamsMap query;
g_binaryswitchResource->post("oic.r.switch.binary", DEFAULT_INTERFACE, binarySwitch, query,
&onPost);
}
https://wiki.iotivity.org/build_for_your_system
Build IoTivity project for
Product Perspective
Artik053s ATSAM4S-XPRO + WINC1500 + Crypto
Thank you...

Recommended for you

Sigfox World Expo - Advanced Workshop
Sigfox World Expo - Advanced WorkshopSigfox World Expo - Advanced Workshop
Sigfox World Expo - Advanced Workshop

This document summarizes an advanced Sigfox workshop covering topics like downlink callbacks, event monitoring, geolocation callbacks, and using AT commands with the Xkit shield. It provides useful resources and contact information for Aurelien Lequertier and Nicolas Lesconnec. The workshop includes demonstrations of configuring downlink callbacks, monitoring for breaks in message sequences, geolocation callbacks, using IFTTT for advanced callbacks, and sending AT commands to the Xkit shield.

iotsigfoxxkit
Tick Stack - Listen your infrastructure and please sleep
Tick Stack - Listen your infrastructure and please sleepTick Stack - Listen your infrastructure and please sleep
Tick Stack - Listen your infrastructure and please sleep

Our application and our infrastructure speak, time series are one of their languages, during this talk I will share my experience about InfluxDB and time series to monitor and know the status of our cloud infrastructure. We will show best practice and tricks to grab information from an application in order to understand the mains difference between logs and time series.

devopscloudmonitoring
Solving anything in VCL
Solving anything in VCLSolving anything in VCL
Solving anything in VCL

Andrew Betts Web Developer, The Financial Times at Fastly Altitude 2016 Running custom code at the Edge using a standard language is one of the biggest advantages of working with Fastly’s CDN. Andrew gives you a tour of all the problems the Financial Times and Nikkei solve in VCL and how their solutions work.

fastlyvclvarnish

More Related Content

What's hot

Program for hamming code using c
Program for hamming code using cProgram for hamming code using c
Program for hamming code using c
snsanth
 
Cosmos, Big Data GE Implementation
Cosmos, Big Data GE ImplementationCosmos, Big Data GE Implementation
Cosmos, Big Data GE Implementation
FIWARE
 
Building Your Own IoT Platform using FIWARE GEis
Building Your Own IoT Platform using FIWARE GEisBuilding Your Own IoT Platform using FIWARE GEis
Building Your Own IoT Platform using FIWARE GEis
FIWARE
 
OSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at Netflix
OSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at NetflixOSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at Netflix
OSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at Netflix
Manish Pandit
 
QA Fest 2019. Saar Rachamim. Developing Tools, While Testing
QA Fest 2019. Saar Rachamim. Developing Tools, While TestingQA Fest 2019. Saar Rachamim. Developing Tools, While Testing
QA Fest 2019. Saar Rachamim. Developing Tools, While Testing
QAFest
 
Learning Dtrace
Learning DtraceLearning Dtrace
Learning Dtrace
JeongHun Byeon
 
Durable functions
Durable functionsDurable functions
Durable functions
명신 김
 
Nko workshop - node js crud & deploy
Nko workshop - node js crud & deployNko workshop - node js crud & deploy
Nko workshop - node js crud & deploy
Simon Su
 
Java client socket-20070327
Java client socket-20070327Java client socket-20070327
Java client socket-20070327
Tsu-Fen Han
 
Source Code for Dpilot
Source Code for Dpilot Source Code for Dpilot
Source Code for Dpilot
Nidhi Chauhan
 
Dpilot Source Code With ScreenShots
Dpilot Source Code With ScreenShots Dpilot Source Code With ScreenShots
Dpilot Source Code With ScreenShots
DeepAnshu Sharma
 
Programming with ZooKeeper - A basic tutorial
Programming with ZooKeeper - A basic tutorialProgramming with ZooKeeper - A basic tutorial
Programming with ZooKeeper - A basic tutorial
Jeff Smith
 
SPIFFE Meetup Tokyo #2 - Attestation Internals in SPIRE - Shingo Omura
SPIFFE Meetup Tokyo #2 - Attestation Internals in SPIRE - Shingo OmuraSPIFFE Meetup Tokyo #2 - Attestation Internals in SPIRE - Shingo Omura
SPIFFE Meetup Tokyo #2 - Attestation Internals in SPIRE - Shingo Omura
Preferred Networks
 
Browser-based Secure Remote Access for the Internet of Things
Browser-based Secure Remote Access for the Internet of ThingsBrowser-based Secure Remote Access for the Internet of Things
Browser-based Secure Remote Access for the Internet of Things
Günter Obiltschnig
 
Inversion Of Control
Inversion Of ControlInversion Of Control
Inversion Of Control
Chad Hietala
 
Hack ASP.NET website
Hack ASP.NET websiteHack ASP.NET website
Hack ASP.NET website
Positive Hack Days
 
Score (smart contract for icon)
Score (smart contract for icon) Score (smart contract for icon)
Score (smart contract for icon)
Doyun Hwang
 
Automated reduction of attack surface using call graph enumeration
Automated reduction of attack surface using call graph enumerationAutomated reduction of attack surface using call graph enumeration
Automated reduction of attack surface using call graph enumeration
Ruo Ando
 

What's hot (18)

Program for hamming code using c
Program for hamming code using cProgram for hamming code using c
Program for hamming code using c
 
Cosmos, Big Data GE Implementation
Cosmos, Big Data GE ImplementationCosmos, Big Data GE Implementation
Cosmos, Big Data GE Implementation
 
Building Your Own IoT Platform using FIWARE GEis
Building Your Own IoT Platform using FIWARE GEisBuilding Your Own IoT Platform using FIWARE GEis
Building Your Own IoT Platform using FIWARE GEis
 
OSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at Netflix
OSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at NetflixOSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at Netflix
OSCON 2014 - API Ecosystem with Scala, Scalatra, and Swagger at Netflix
 
QA Fest 2019. Saar Rachamim. Developing Tools, While Testing
QA Fest 2019. Saar Rachamim. Developing Tools, While TestingQA Fest 2019. Saar Rachamim. Developing Tools, While Testing
QA Fest 2019. Saar Rachamim. Developing Tools, While Testing
 
Learning Dtrace
Learning DtraceLearning Dtrace
Learning Dtrace
 
Durable functions
Durable functionsDurable functions
Durable functions
 
Nko workshop - node js crud & deploy
Nko workshop - node js crud & deployNko workshop - node js crud & deploy
Nko workshop - node js crud & deploy
 
Java client socket-20070327
Java client socket-20070327Java client socket-20070327
Java client socket-20070327
 
Source Code for Dpilot
Source Code for Dpilot Source Code for Dpilot
Source Code for Dpilot
 
Dpilot Source Code With ScreenShots
Dpilot Source Code With ScreenShots Dpilot Source Code With ScreenShots
Dpilot Source Code With ScreenShots
 
Programming with ZooKeeper - A basic tutorial
Programming with ZooKeeper - A basic tutorialProgramming with ZooKeeper - A basic tutorial
Programming with ZooKeeper - A basic tutorial
 
SPIFFE Meetup Tokyo #2 - Attestation Internals in SPIRE - Shingo Omura
SPIFFE Meetup Tokyo #2 - Attestation Internals in SPIRE - Shingo OmuraSPIFFE Meetup Tokyo #2 - Attestation Internals in SPIRE - Shingo Omura
SPIFFE Meetup Tokyo #2 - Attestation Internals in SPIRE - Shingo Omura
 
Browser-based Secure Remote Access for the Internet of Things
Browser-based Secure Remote Access for the Internet of ThingsBrowser-based Secure Remote Access for the Internet of Things
Browser-based Secure Remote Access for the Internet of Things
 
Inversion Of Control
Inversion Of ControlInversion Of Control
Inversion Of Control
 
Hack ASP.NET website
Hack ASP.NET websiteHack ASP.NET website
Hack ASP.NET website
 
Score (smart contract for icon)
Score (smart contract for icon) Score (smart contract for icon)
Score (smart contract for icon)
 
Automated reduction of attack surface using call graph enumeration
Automated reduction of attack surface using call graph enumerationAutomated reduction of attack surface using call graph enumeration
Automated reduction of attack surface using call graph enumeration
 

Similar to Build resource server &amp; client for OCF Cloud (2018.8.30)

Fiware io t_ul20_cpbr8
Fiware io t_ul20_cpbr8Fiware io t_ul20_cpbr8
Fiware io t_ul20_cpbr8
FIWARE
 
IoT on Raspberry PI v1.2
IoT on Raspberry PI v1.2IoT on Raspberry PI v1.2
IoT on Raspberry PI v1.2
John Staveley
 
Labs_BT_20221017.pptx
Labs_BT_20221017.pptxLabs_BT_20221017.pptx
Labs_BT_20221017.pptx
ssuserb4d806
 
Sigfox World Expo - Advanced Workshop
Sigfox World Expo - Advanced WorkshopSigfox World Expo - Advanced Workshop
Sigfox World Expo - Advanced Workshop
Nicolas Lesconnec
 
Tick Stack - Listen your infrastructure and please sleep
Tick Stack - Listen your infrastructure and please sleepTick Stack - Listen your infrastructure and please sleep
Tick Stack - Listen your infrastructure and please sleep
Gianluca Arbezzano
 
Solving anything in VCL
Solving anything in VCLSolving anything in VCL
Solving anything in VCL
Fastly
 
Time Series Database and Tick Stack
Time Series Database and Tick StackTime Series Database and Tick Stack
Time Series Database and Tick Stack
Gianluca Arbezzano
 
Python from zero to hero (Twitter Explorer)
Python from zero to hero (Twitter Explorer)Python from zero to hero (Twitter Explorer)
Python from zero to hero (Twitter Explorer)
Yuriy Senko
 
10 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 2020
10 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 202010 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 2020
10 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 2020
Matt Raible
 
Swift hardware hacking @ try! Swift
Swift hardware hacking @ try! SwiftSwift hardware hacking @ try! Swift
Swift hardware hacking @ try! Swift
Sally Shepard
 
SE2016 Android Denis Zhuchinski "Ways of enhancing application security"
SE2016 Android Denis Zhuchinski "Ways of enhancing application security"SE2016 Android Denis Zhuchinski "Ways of enhancing application security"
SE2016 Android Denis Zhuchinski "Ways of enhancing application security"
Inhacking
 
FIWARE Primer - Learn FIWARE in 60 Minutes
FIWARE Primer - Learn FIWARE in 60 MinutesFIWARE Primer - Learn FIWARE in 60 Minutes
FIWARE Primer - Learn FIWARE in 60 Minutes
Federico Michele Facca
 
Federico Michele Facca - FIWARE Primer - Learn FIWARE in 60 Minutes
Federico Michele Facca - FIWARE Primer - Learn FIWARE in 60 MinutesFederico Michele Facca - FIWARE Primer - Learn FIWARE in 60 Minutes
Federico Michele Facca - FIWARE Primer - Learn FIWARE in 60 Minutes
Codemotion
 
Power your apps with Gmail, Google Drive, Calendar, Sheets, Slides & more
Power your apps with Gmail, Google Drive, Calendar, Sheets, Slides & morePower your apps with Gmail, Google Drive, Calendar, Sheets, Slides & more
Power your apps with Gmail, Google Drive, Calendar, Sheets, Slides & more
wesley chun
 
以Device Shadows與Rules Engine串聯實體世界
以Device Shadows與Rules Engine串聯實體世界以Device Shadows與Rules Engine串聯實體世界
以Device Shadows與Rules Engine串聯實體世界
Amazon Web Services
 
服务框架: Thrift & PasteScript
服务框架: Thrift & PasteScript服务框架: Thrift & PasteScript
服务框架: Thrift & PasteScript
Qiangning Hong
 
Build Your Own HiveMQ Extension
Build Your Own HiveMQ ExtensionBuild Your Own HiveMQ Extension
Build Your Own HiveMQ Extension
HiveMQ
 
Pyramid deployment
Pyramid deploymentPyramid deployment
Pyramid deployment
Carlos de la Guardia
 
Fiware IoT Proposal & Community
Fiware IoT Proposal & Community Fiware IoT Proposal & Community
Fiware IoT Proposal & Community
TIDChile
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 

Similar to Build resource server &amp; client for OCF Cloud (2018.8.30) (20)

Fiware io t_ul20_cpbr8
Fiware io t_ul20_cpbr8Fiware io t_ul20_cpbr8
Fiware io t_ul20_cpbr8
 
IoT on Raspberry PI v1.2
IoT on Raspberry PI v1.2IoT on Raspberry PI v1.2
IoT on Raspberry PI v1.2
 
Labs_BT_20221017.pptx
Labs_BT_20221017.pptxLabs_BT_20221017.pptx
Labs_BT_20221017.pptx
 
Sigfox World Expo - Advanced Workshop
Sigfox World Expo - Advanced WorkshopSigfox World Expo - Advanced Workshop
Sigfox World Expo - Advanced Workshop
 
Tick Stack - Listen your infrastructure and please sleep
Tick Stack - Listen your infrastructure and please sleepTick Stack - Listen your infrastructure and please sleep
Tick Stack - Listen your infrastructure and please sleep
 
Solving anything in VCL
Solving anything in VCLSolving anything in VCL
Solving anything in VCL
 
Time Series Database and Tick Stack
Time Series Database and Tick StackTime Series Database and Tick Stack
Time Series Database and Tick Stack
 
Python from zero to hero (Twitter Explorer)
Python from zero to hero (Twitter Explorer)Python from zero to hero (Twitter Explorer)
Python from zero to hero (Twitter Explorer)
 
10 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 2020
10 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 202010 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 2020
10 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 2020
 
Swift hardware hacking @ try! Swift
Swift hardware hacking @ try! SwiftSwift hardware hacking @ try! Swift
Swift hardware hacking @ try! Swift
 
SE2016 Android Denis Zhuchinski "Ways of enhancing application security"
SE2016 Android Denis Zhuchinski "Ways of enhancing application security"SE2016 Android Denis Zhuchinski "Ways of enhancing application security"
SE2016 Android Denis Zhuchinski "Ways of enhancing application security"
 
FIWARE Primer - Learn FIWARE in 60 Minutes
FIWARE Primer - Learn FIWARE in 60 MinutesFIWARE Primer - Learn FIWARE in 60 Minutes
FIWARE Primer - Learn FIWARE in 60 Minutes
 
Federico Michele Facca - FIWARE Primer - Learn FIWARE in 60 Minutes
Federico Michele Facca - FIWARE Primer - Learn FIWARE in 60 MinutesFederico Michele Facca - FIWARE Primer - Learn FIWARE in 60 Minutes
Federico Michele Facca - FIWARE Primer - Learn FIWARE in 60 Minutes
 
Power your apps with Gmail, Google Drive, Calendar, Sheets, Slides & more
Power your apps with Gmail, Google Drive, Calendar, Sheets, Slides & morePower your apps with Gmail, Google Drive, Calendar, Sheets, Slides & more
Power your apps with Gmail, Google Drive, Calendar, Sheets, Slides & more
 
以Device Shadows與Rules Engine串聯實體世界
以Device Shadows與Rules Engine串聯實體世界以Device Shadows與Rules Engine串聯實體世界
以Device Shadows與Rules Engine串聯實體世界
 
服务框架: Thrift & PasteScript
服务框架: Thrift & PasteScript服务框架: Thrift & PasteScript
服务框架: Thrift & PasteScript
 
Build Your Own HiveMQ Extension
Build Your Own HiveMQ ExtensionBuild Your Own HiveMQ Extension
Build Your Own HiveMQ Extension
 
Pyramid deployment
Pyramid deploymentPyramid deployment
Pyramid deployment
 
Fiware IoT Proposal & Community
Fiware IoT Proposal & Community Fiware IoT Proposal & Community
Fiware IoT Proposal & Community
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 

Recently uploaded

Prada Group Reports Strong Growth in First Quarter …
Prada Group Reports Strong Growth in First Quarter …Prada Group Reports Strong Growth in First Quarter …
Prada Group Reports Strong Growth in First Quarter …
908dutch
 
dachnug51 - Whats new in domino 14 .pdf
dachnug51 - Whats new in domino 14  .pdfdachnug51 - Whats new in domino 14  .pdf
dachnug51 - Whats new in domino 14 .pdf
DNUG e.V.
 
COMPSAC 2024 D&I Panel: Charting a Course for Equity: Strategies for Overcomi...
COMPSAC 2024 D&I Panel: Charting a Course for Equity: Strategies for Overcomi...COMPSAC 2024 D&I Panel: Charting a Course for Equity: Strategies for Overcomi...
COMPSAC 2024 D&I Panel: Charting a Course for Equity: Strategies for Overcomi...
Hironori Washizaki
 
Shivam Pandit working on Php Web Developer.
Shivam Pandit working on Php Web Developer.Shivam Pandit working on Php Web Developer.
Shivam Pandit working on Php Web Developer.
shivamt017
 
Top 10 Tips To Get Google AdSense For Your Website
Top 10 Tips To Get Google AdSense For Your WebsiteTop 10 Tips To Get Google AdSense For Your Website
Top 10 Tips To Get Google AdSense For Your Website
e-Definers Technology
 
Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024
Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024
Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024
ThousandEyes
 
Cultural Shifts: Embracing DevOps for Organizational Transformation
Cultural Shifts: Embracing DevOps for Organizational TransformationCultural Shifts: Embracing DevOps for Organizational Transformation
Cultural Shifts: Embracing DevOps for Organizational Transformation
Mindfire Solution
 
A Comparative Analysis of Functional and Non-Functional Testing.pdf
A Comparative Analysis of Functional and Non-Functional Testing.pdfA Comparative Analysis of Functional and Non-Functional Testing.pdf
A Comparative Analysis of Functional and Non-Functional Testing.pdf
kalichargn70th171
 
Seamless PostgreSQL to Snowflake Data Transfer in 8 Simple Steps
Seamless PostgreSQL to Snowflake Data Transfer in 8 Simple StepsSeamless PostgreSQL to Snowflake Data Transfer in 8 Simple Steps
Seamless PostgreSQL to Snowflake Data Transfer in 8 Simple Steps
Estuary Flow
 
Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...
Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...
Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...
onemonitarsoftware
 
React Native vs Flutter - SSTech System
React Native vs Flutter  - SSTech SystemReact Native vs Flutter  - SSTech System
React Native vs Flutter - SSTech System
SSTech System
 
Folding Cheat Sheet #7 - seventh in a series
Folding Cheat Sheet #7 - seventh in a seriesFolding Cheat Sheet #7 - seventh in a series
Folding Cheat Sheet #7 - seventh in a series
Philip Schwarz
 
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) Course Introducti...
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) Course Introducti...AWS Cloud Practitioner Essentials (Second Edition) (Arabic) Course Introducti...
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) Course Introducti...
karim wahed
 
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdf
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdfAWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdf
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdf
karim wahed
 
Google ML-Kit - Understanding on-device machine learning
Google ML-Kit - Understanding on-device machine learningGoogle ML-Kit - Understanding on-device machine learning
Google ML-Kit - Understanding on-device machine learning
VishrutGoyani1
 
ENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentationENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentation
sofiafernandezon
 
Responsibilities of Fleet Managers and How TrackoBit Can Assist.pdf
Responsibilities of Fleet Managers and How TrackoBit Can Assist.pdfResponsibilities of Fleet Managers and How TrackoBit Can Assist.pdf
Responsibilities of Fleet Managers and How TrackoBit Can Assist.pdf
Trackobit
 
Independence Day Hasn’t Always Been a U.S. Holiday.pdf
Independence Day Hasn’t Always Been a U.S. Holiday.pdfIndependence Day Hasn’t Always Been a U.S. Holiday.pdf
Independence Day Hasn’t Always Been a U.S. Holiday.pdf
Livetecs LLC
 
Software development... for all? (keynote at ICSOFT'2024)
Software development... for all? (keynote at ICSOFT'2024)Software development... for all? (keynote at ICSOFT'2024)
Software development... for all? (keynote at ICSOFT'2024)
miso_uam
 
BITCOIN HEIST RANSOMEWARE ATTACK PREDICTION
BITCOIN HEIST RANSOMEWARE ATTACK PREDICTIONBITCOIN HEIST RANSOMEWARE ATTACK PREDICTION
BITCOIN HEIST RANSOMEWARE ATTACK PREDICTION
ssuser2b426d1
 

Recently uploaded (20)

Prada Group Reports Strong Growth in First Quarter …
Prada Group Reports Strong Growth in First Quarter …Prada Group Reports Strong Growth in First Quarter …
Prada Group Reports Strong Growth in First Quarter …
 
dachnug51 - Whats new in domino 14 .pdf
dachnug51 - Whats new in domino 14  .pdfdachnug51 - Whats new in domino 14  .pdf
dachnug51 - Whats new in domino 14 .pdf
 
COMPSAC 2024 D&I Panel: Charting a Course for Equity: Strategies for Overcomi...
COMPSAC 2024 D&I Panel: Charting a Course for Equity: Strategies for Overcomi...COMPSAC 2024 D&I Panel: Charting a Course for Equity: Strategies for Overcomi...
COMPSAC 2024 D&I Panel: Charting a Course for Equity: Strategies for Overcomi...
 
Shivam Pandit working on Php Web Developer.
Shivam Pandit working on Php Web Developer.Shivam Pandit working on Php Web Developer.
Shivam Pandit working on Php Web Developer.
 
Top 10 Tips To Get Google AdSense For Your Website
Top 10 Tips To Get Google AdSense For Your WebsiteTop 10 Tips To Get Google AdSense For Your Website
Top 10 Tips To Get Google AdSense For Your Website
 
Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024
Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024
Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024
 
Cultural Shifts: Embracing DevOps for Organizational Transformation
Cultural Shifts: Embracing DevOps for Organizational TransformationCultural Shifts: Embracing DevOps for Organizational Transformation
Cultural Shifts: Embracing DevOps for Organizational Transformation
 
A Comparative Analysis of Functional and Non-Functional Testing.pdf
A Comparative Analysis of Functional and Non-Functional Testing.pdfA Comparative Analysis of Functional and Non-Functional Testing.pdf
A Comparative Analysis of Functional and Non-Functional Testing.pdf
 
Seamless PostgreSQL to Snowflake Data Transfer in 8 Simple Steps
Seamless PostgreSQL to Snowflake Data Transfer in 8 Simple StepsSeamless PostgreSQL to Snowflake Data Transfer in 8 Simple Steps
Seamless PostgreSQL to Snowflake Data Transfer in 8 Simple Steps
 
Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...
Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...
Discover the Power of ONEMONITAR: The Ultimate Mobile Spy App for Android Dev...
 
React Native vs Flutter - SSTech System
React Native vs Flutter  - SSTech SystemReact Native vs Flutter  - SSTech System
React Native vs Flutter - SSTech System
 
Folding Cheat Sheet #7 - seventh in a series
Folding Cheat Sheet #7 - seventh in a seriesFolding Cheat Sheet #7 - seventh in a series
Folding Cheat Sheet #7 - seventh in a series
 
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) Course Introducti...
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) Course Introducti...AWS Cloud Practitioner Essentials (Second Edition) (Arabic) Course Introducti...
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) Course Introducti...
 
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdf
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdfAWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdf
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdf
 
Google ML-Kit - Understanding on-device machine learning
Google ML-Kit - Understanding on-device machine learningGoogle ML-Kit - Understanding on-device machine learning
Google ML-Kit - Understanding on-device machine learning
 
ENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentationENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentation
 
Responsibilities of Fleet Managers and How TrackoBit Can Assist.pdf
Responsibilities of Fleet Managers and How TrackoBit Can Assist.pdfResponsibilities of Fleet Managers and How TrackoBit Can Assist.pdf
Responsibilities of Fleet Managers and How TrackoBit Can Assist.pdf
 
Independence Day Hasn’t Always Been a U.S. Holiday.pdf
Independence Day Hasn’t Always Been a U.S. Holiday.pdfIndependence Day Hasn’t Always Been a U.S. Holiday.pdf
Independence Day Hasn’t Always Been a U.S. Holiday.pdf
 
Software development... for all? (keynote at ICSOFT'2024)
Software development... for all? (keynote at ICSOFT'2024)Software development... for all? (keynote at ICSOFT'2024)
Software development... for all? (keynote at ICSOFT'2024)
 
BITCOIN HEIST RANSOMEWARE ATTACK PREDICTION
BITCOIN HEIST RANSOMEWARE ATTACK PREDICTIONBITCOIN HEIST RANSOMEWARE ATTACK PREDICTION
BITCOIN HEIST RANSOMEWARE ATTACK PREDICTION
 

Build resource server &amp; client for OCF Cloud (2018.8.30)

  • 1. Build Resource Server & Client for OCF Cloud ryan.kim@data-alliance.com 2018. 8. 30
  • 2. Cloud Architecture OCF Cloud : Resource Directory is used for storing and finding resources. Account is used for storing User & Device info. Message Queue is based on Kafka and used for message queue. Cloud Interface process uses Device Server System module to handle devices. (*You should put Interface server address, credential to run sample.) Resource Server (Controlee) : Things Device eg> TV, Refrigerator, Air Conditioner, Air Purifier, Dishwasher... Resource Client (Controller) : Remote Control App
  • 3. Build and run IoTivity projects Install build env $ sudo apt-get install build-essential git scons libtool autoconf valgrind doxygen wget unzip chrpath Install development support for external libraries: $ sudo apt-get install libboost-dev libboost-program-options-dev libboost-thread-dev uuid-dev libexpat1-dev libglib2.0-dev libsqlite3-dev libcurl4-gnutls-dev How to build IoTivity projects $ git clone https://gerrit.iotivity.org/gerrit/p/iotivity.git -b 1.3.1 iotivity-v1.3.1 $ cd iotivity-v1.3.1 $ git clone https://github.com/01org/tinycbor.git extlibs/tinycbor/tinycbor -b v0.4.1 $ git clone https://github.com/ARMmbed/mbedtls.git extlibs/mbedtls/mbedtls -b mbedtls-2.4.2 $ scons cloud/ WITH_TCP=yes RELEASE=yes TARGET_TRANSPORT=IP WITH_CLOUD=yes WITH_MQ=PUB,SUB SECURED=0 -j 2 Two more Extlib needed. -j N, --jobs=N Allow N jobs at once.
  • 4. Sample source code folder and Build output folder Sample source code folder iotivity-v1.3.1/cloud/samples/client/airconditioner/ Build output folder iotivity-v1.3.1/out/linux/x86_64/release/cloud/samples/client/
  • 5. Run Resource Server ( Controlee Device : TV, Aircon, Dishwasher . . . ) Run Resource Server $ cd /out/linux/x86_64/release/cloud/samples/client/ $ ./aircon_controlee Put "[host-ipaddress:port] [authprovider] [authcode]" for sign-up and sign-in and publish resources Put "[host-ipaddress:port] [uid] [accessToken] 1" for sign-in and publish resources
  • 6. Interface server address (host-ipaddress) You should put Interface server address, credential to run sample. Refer the Interface server address and port number below. 35.227.183.218:5683 ⇐ For OCF Korea Hackathon( ~ 2018. 9. 31), Non secured, Based on v1.3.1 35.221.81.241:5683 ⇐ For Public Test Purpose( ~ 2019. 08. 27), Secured, Based on v1.3.1
  • 7. Device Sign-up using OAuth 2 Auth Code Device Sign-up using OAuth 2 Auth Code To register device, you need 'Auth Code' provided by OAuth 2 provider like Facebook, Google or Github. IoTivity Cloud project includes 'GitHub' account plugin. To get a 'Auth Code' from 'GitHub' you can make request to below URL. https://github.com/login?return_to=/login/oauth/authorize?client_id=378c7c6a465fa4d37816&redirect_uri=htt p://35.227.183.170:8081/oauth_callback Once you signed-in, you'll be redirected to other web page include 'Auth Code' in the redirected URL. http://www.example.com/oauth_callback/?code=3a03a37366c3678aa634 The 'code' part in the URI is the 'Auth Code' from 'GitHub'. We'll use this code to register and sign-in device.
  • 8. Device Sign-up using OAuth 2 Auth Code
  • 9. Run Resource Server ( Controlee Device : TV, Aircon, Dishwasher . . . ) Run Resource Server - Sign Up (To get the UID & AccessToken for the first time.) $ ./aircon_controlee 35.227.183.218:5683 github 3a03a37366c3678aa634 Auth response received code: 4 accesstoken: de42093f01fd35645bd6038139213c56a6fca3e6 certificate: [..CertInfo..] expiresin: -1 redirecturi: coap+tcp://127.0.0.1:5683 refreshtoken: (null) sid: 2a6085d1-815d-4277-baba-4e4e4df91308 tokentype: bearer uid: 0cf89f61-d999-48cf-857f-73918a37531c PUT 1/0 to turn on/off air conditioner for observe testing, q to terminate Publish resource response received, code: 4
  • 10. Run Resource Server ( Controlee Device : TV, Aircon, Dishwasher . . . ) Run Resource Server - Sign In (After obtaining the UID & AccessToken) $ ./aircon_controlee 35.227.183.218:5683 0cf89f61-d999-48cf-857f-73918a37531c de42093f01fd35645bd6038139213c56a6fca3e6 Auth response received code: 4 expiresin: -1 Registering resources to platform... Publishing resources to cloud result: 0 Waiting Publish default resource response from cloud result: 0 Waiting Publish user resource response from cloud Publish resource response received, code: 4 PUT 1/0 to turn on/off air conditioner for observe testing, q to terminate Publish resource response received, code: 4
  • 11. Run as a Service (optional) example service file below $ vi aircon.service [Unit] Description=OCF Airconditioner Requires=network-online.target [Service] Type=simple RestartSec=3s User=pi Group=pi ExecStart=/home/pi/aircon/airconditioner_controlee 35.227.183.218:5683 0cf89f61-d999-48cf-857f-73918a37531c de42093f01fd35645bd6038139213c56a6fca3e6 WorkingDirectory=/home/pi/aircon Restart=always [Install] WantedBy=multi-user.target
  • 12. Run as a Service (optional) Start service $ systemctl enable aircon.service && systemctl start aircon.service Restart service $ systemctl restart aircon.service Stop service $ systemctl stop aircon.service && systemctl disable aircon.service Service log $ journalctl -u aircon.service -f
  • 13. Run Resource Client ( Controller Device : Remote Controller App ) Run Resource Client - Sign Up (To get the UID & AccessToken for the first time.) $ ./aircon_controller 35.227.183.218:5683 github 9d31d32e18c3e38bd559 Login/out response received code: 4 accesstoken: a0572063607baae269e5fdc336367d295f1efbdc certificate: [..CertInfo..] redirecturi: coap+tcp://127.0.0.1:5683 refreshtoken: (null) sid: 2a6085d1-815d-4277-baba-4e4e4df91308 tokentype: bearer uid: 0cf89f61-d999-48cf-857f-73918a37531c Login/out response received code: 4 expiresin: -1 Finding airconditioner result: 0 Device found: /di/1a78ae17-3dc0-48f8-a51e-b19574de198b/oic/d DI: 1a78ae17-3dc0-48f8-a51e-b19574de198b PUT 1/0 to turn on/off air conditioner, q to terminate
  • 14. Run Resource Client ( Controller Device : Remote Controller App ) Run Resource Client - Sign In (After obtaining the UID & AccessToken) $ ./aircon_controller 35.227.183.218:5683 0cf89f61-d999-48cf-857f-73918a37531c a0572063607baae269e5fdc336367d295f1efbdc
  • 15. aircon_controlee.cpp (1) int main(int argc, char *argv[]) { if (argc != 4) { cout << "Put "[host-ipaddress:port] [authprovider] [authcode]" for sign-up and sign-in and publish resources" << endl; cout << "Put "[host-ipaddress:port] [uid] [accessToken]" for sign-in and publish resources" << endl; return 0; } . . .
  • 16. aircon_controlee.cpp (2) int main(int argc, char *argv[]) { . . . if (strlen(argv[2]) > 35) { accountMgr->signIn(argv[2], argv[3], &handleLoginoutCB); g_callbackLock.wait(lock); } else { accountMgr->signUp(argv[2], argv[3], &handleLoginoutCB); g_callbackLock.wait(lock); accountMgr->signIn(g_uid, g_accesstoken, &handleLoginoutCB); g_callbackLock.wait(lock); } . . .
  • 17. aircon_controlee.cpp (3) int main(int argc, char *argv[]) { . . . cout << "Registering resources to platform..." << endl; AirConditionerResource airConditioner("/aircon/0", { "x.org.iotivity.ac" }, { DEFAULT_INTERFACE, BATCH_INTERFACE, LINK_INTERFACE }); BinarySwitchResource binarySwitch("/power/0", { "oic.r.switch.binary" }, { DEFAULT_INTERFACE }); TemperatureResource temperature("/temperature/0", { "oic.r.temperature" }, { DEFAULT_INTERFACE }); FirmwareResource firmware("/firmware", { "x.org.iotivity.firmware" }, { DEFAULT_INTERFACE }); . . .
  • 18. aircon_controlee.cpp (4) int main(int argc, char *argv[]) { . . . result = OCPlatform::registerResource(airConditioner.m_handle, uri, rt, itf, bind(&AirConditionerResource::entityHandler , &airConditioner, placeholders::_1), OC_DISCOVERABLE); . . . result = OCPlatform::registerResource(binarySwitch.m_handle, uri, rt, itf, bind(&BinarySwitchResource::entityHandler , &binarySwitch, placeholders::_1), OC_OBSERVABLE);
  • 19. aircon_controlee.cpp (5) int main(int argc, char *argv[]) { . . . while (true) { switch (cmd[0]) { case '1': rep.setValue(string("value"), true); binarySwitch.setBinarySwitchRepresentation(rep); break; case '0': rep.setValue(string("value"), false); binarySwitch.setBinarySwitchRepresentation(rep); break; } }
  • 20. aircon_controlee.cpp (6) class BinarySwitchResource : public Resource //oic.r.switch.binary { private: bool m_value; void setBinarySwitchRepresentation(OCRepresentation &rep) { bool value; if (rep.getValue("value", value)) { m_value = value; m_representation.setValue("value", m_value); cout << "tttt" << "value: " << m_value << endl; propagate(); } } #if defined(WIRINGPI) if (m_value) { digitalWrite (DEVICE_PIN, HIGH); } else { digitalWrite (DEVICE_PIN, LOW); } #endif
  • 21. aircon_controller.cpp (1) int main(int argc, char *argv[]) { if (argc != 4) { cout << "Put "[host-ipaddress:port] [authprovider] [authcode]" for sign-up and sign-in and publish resources" << endl; cout << "Put "[host-ipaddress:port] [uid] [accessToken]" for sign-in and publish resources" << endl; return 0; } . . .
  • 22. aircon_controller.cpp (2) int main(int argc, char *argv[]) { . . . if (strlen(argv[2]) > 35) { accountMgr->signIn(argv[2], argv[3], &handleLoginoutCB); g_callbackLock.wait(lock); } else { accountMgr->signUp(argv[2], argv[3], &handleLoginoutCB); g_callbackLock.wait(lock); accountMgr->signIn(g_uid, g_accesstoken, &handleLoginoutCB); g_callbackLock.wait(lock); } . . .
  • 23. aircon_controller.cpp (3) int main(int argc, char *argv[]) { . . . cout << "Finding airconditioner "; result = OCPlatform::findResource(g_host, "/oic/res?rt=oic.wk.d", static_cast<OCConnectivityType>(CT_ADAPTER_TCP | CT_IP_USE_V4), &foundDevice, &errorFoundDevice); cout << " result: " << result << endl; . . . void foundDevice(shared_ptr<OC::OCResource> resource) { OCPlatform::findResource(g_host, searchQuery, static_cast<OCConnectivityType>(CT_ADAPTER_TCP | CT_IP_USE_V4), &foundAirconditionerResource);
  • 24. aircon_controller.cpp (4) void foundAirconditionerResource(shared_ptr<OC::OCResource> resource) { . . . resource->get(query, &getCollectionResource); void getCollectionResource(const HeaderOptions &, const OCRepresentation &rep, const int ecode) { g_binaryswitchResource = OCPlatform::constructResourceObject(g_host, it->getUri(), static_cast<OCConnectivityType>(CT_ADAPTER_TCP | CT_IP_USE_V4), true,
  • 25. aircon_controller.cpp (5) void turnOnOffSwitch(bool toTurn) { if (g_binaryswitchResource == nullptr) { cout << "Binary switch not found" << endl; return; } OCRepresentation binarySwitch; binarySwitch.setValue("value", toTurn); QueryParamsMap query; g_binaryswitchResource->post("oic.r.switch.binary", DEFAULT_INTERFACE, binarySwitch, query, &onPost); }