SiteCrawler
Tor, Onion Spiders
28 aprile 2016
PowerShell
PowerShell, FileSystem Monitoring
11 maggio 2016
Mostra tutto

Free Push Services

Push
Tramite le notifiche push è possibile ricevere notizie senza che vengano scaricate su richiesta dell’utente.
Ciò significa che anche se un’applicazione è apparentemente chiusa, in realtà alcune funzioni continuano in background permettendo di notificare all'utente praticamente qualsiasi cosa direttamente sulla home del nostro dispositivo.
Nell'articolo di oggi vedremo come creare gratuitamente le nostre notifiche personalizzate.

Tramite Pushbullet

Pushbullet è compatibile pressochè con ogni piattaforma, infatti è disponibile per iOS/OSX/Android/Windows Mobile/Web Browser (tramite apposite estensioni).


Il funzionamento è piuttosto semplice, infatti è sufficiente scaricare l'app (gratuitamente) dal proprio store di riferimento (App Store/Google Play/Windows Store/ecc..) e registrare un account.
Una volta attivato l'account sarà associato ad una token (utilizzata per indentificare il vostro account tramite le apposite API fornite da Pushbullet) tramite la quale possiamo iniziare a inviare le nostre notifiche.

Ecco un semplice esempio tramite curl:
curl --header 'Authorization: Bearer <your_access_token_here>' -X POST https://api.pushbullet.com/v2/pushes --header 'Content-Type: application/json' --data-binary '{"type": "note", "title": "Titolo della Nota", "body": "Corpo della nota"}'
Qui un esempio in PowerShell:
$PushURL = "https://api.pushbullet.com/v2/pushes";
$PushMethod = "POST";
$APIKey = "<your_access_token_here>";
$AccessCredential = New-Object System.Management.Automation.PSCredential ($APIKey, (ConvertTo-SecureString $APIKey -AsPlainText -Force));
$Body = @{type='note';title="Titolo della Nota";body="Corpo della nota";}
Invoke-RestMethod -Uri $PushURL -Method $PushMethod -Body $Body -Credential $AccessCredential;
Qui è disponibile un pratico client per BASH:
https://github.com/Red5d/pushbullet-bash
A questo link un client per Python:
https://github.com/Azelphur/pyPushBullet
Questi sono solo alcuni esempi, altri esempi (es. Integrazione con IFTTT) sono disponibili consultando la documentazione ufficiale.

Tramite Boxcar

Boxcar.io è un servizio molto simile ma un po' più essenziale, infatti al momento è limitato ai soli dispositivi iOS.
Il funzionamento è molto simile a quello di Pushbullet, infatti, effettuando una nuova registrazione verrà associata al vostro account un token tramite la quale è possibile gestire le notifiche.

Ecco un esempio tramite curl:
curl -d "user_credentials=<your_access_token_here>" 
     -d "notification[title]=Titolo della Nota" 
     -d "notification[long_message]=<b>Corpo della Nota</b>" 
     -d "notification[sound]=bird-1" 
     -d "notification[source_name]=My Script" 
     -d "notification[icon_url]=http://new.boxcar.io/images/rss_icons/boxcar-64.png" 
     https://new.boxcar.io/api/notifications
Qui un esempio in Python:
#!/usr/bin/env python

# https://gist.github.com/joech4n/1b3d394ceb8b776f06d7

import os
import sys
import subprocess
import argparse
import ConfigParser
import shlex

# Default config
DEFAULT_SOUND = 'beep-crisp'
DEFAULT_IMAGE = 'http://i.imgur.com/Fea7vsF.png'
DEFAULT_CONFIG_PATH = '~/.' + os.path.basename(__file__)

parser = argparse.ArgumentParser(description='''Send a boxcar notification

API token is sourced from''' + DEFAULT_CONFIG_PATH + ''' by default, but can be overridden with --token. Format of config file:
[config]
token = MYTOKENHERE
''', formatter_class=argparse.RawTextHelpFormatter)
parser.add_argument('-s', '--sound', help='''name of found to play. List of sounds: http://bit.ly/1uOAJG0 
* beep-crisp
* beep-soft
* bell-modern
* bell-one-tone
* bell-simple
* bell-triple
* bird-1
* bird-2
* boing
* cash
* clanging
* detonator-charge
* digital-alarm
* done
* echo
* flourish
* harp
* light
* magic-chime
* magic-coin
* notifier-1
* notifier-2
* notifier-3
* orchestral-long
* orchestral-short
* score
* success
* up
''')
parser.add_argument('title')
parser.add_argument('description', nargs='?', default='')
parser.add_argument('--token', help='If not specified, token will be sourced from ' + DEFAULT_CONFIG_PATH)
parser.add_argument('-q', '--quiet', action='store_true', help='No output unless error.')
args = parser.parse_args()

if args.token is None:
  try: # try loading token from config file
    config = ConfigParser.ConfigParser()
    config.read(os.path.expanduser('~') + '/.' + os.path.basename(__file__))
    token = config.get('config', 'token')
  except:
    sys.exit('ERROR: No token provided. An API token must be provided via ' + DEFAULT_CONFIG_PATH + ' or --token. See --help for format of credentials file and more details.')
else:
  token = args.token

# Example: curl -d "user_credentials=ACCESS_TOKEN" -d "notification[title]=message title" -d "notification[long_message]=<b>Some text or HTML for the full layout page notification</b>" -d "notification[sound]=bird-1" -d "notification[source_name]=My own alert" -d "notification[icon_url]=http://new.boxcar.io/images/rss_icons/boxcar-64.png" https://new.boxcar.io/api/notifications
curlCmd = []
curlCmd.append('curl')
if args.quiet:
  curlCmd.append('-s -o /dev/null')
curlCmd.append('--connect-timeout 2')
curlCmd.append('-d "user_credentials=' + token + '"')
curlCmd.append('-d "user_credentials=' + token + '"')
curlCmd.append('-d "notification[title]=' + args.title + '"')
if args.description:
  curlCmd.append('-d "notification[long_message]=' + args.description + '"')
if args.sound:
  curlCmd.append('-d "notification[sound]=' + args.sound + '"')
else:
  curlCmd.append('-d "notification[sound]=' + DEFAULT_SOUND + '"')
curlCmd.append('-d "notification[source_name]=' + os.path.basename(__file__) + '"')
curlCmd.append('-d "notification[icon_url]=' + DEFAULT_IMAGE + '"')
curlCmd.append('https://new.boxcar.io/api/notifications')

subprocess.check_call(shlex.split(' '.join(curlCmd)))
Questi sono solo alcuni esempi, altri esempi sono disponibili consultando la documentazione ufficiale.

Implementazioni

Come avrete capito leggendo l'articolo le implementazioni sono pressoché illimitate, come per esempio:
  • Integrazione con Nagios/Icinga
  • Integrazione su siti web
  • Integrazione con software di P2P (es. download completato)
  • Implementazione in progetti IoT
  • Implementazione con IFTTT
Praticamente non c'è nessun limite alle possibili implementazioni..

2 Comments

  1. Maillot Manchester United scrive:

    You know I love your blog!!!

  2. Manuela scrive:

    I do consider all off the cobcepts you have offered to your post.
    They are very convincing and caan definitely work.
    Nonetheless, the posts are very short foor novices. Maay just you please prolong them a
    bit from next time? Thanks for the post.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *