/calendarpi

Sync Exchange Calendar to Google Calendar (made for raspberry pi)

Primary LanguageGoMIT LicenseMIT

CalendarPi

CalendarPi will sync calendar appointments between an Exchange Server and Google Calendar. It is made to run on the RaspberryPi but can be run on any machine that supports Go.

Build Status Codacy Badge Coverage Status Author Badge

CalendarPi is a small website that allows users to sync their exchange calenders with google calendar. Multiple users can all use the software and it will maintain each calenadr separately.

Screenshot

Details

CalendarPi supports one directional sync from Exchange to Google Calendar. It will automatically add new items, update exisiting items and delete removed items.

Security

CalendarPi secures all credentials by storing them in an encrypted file locally. The master password for encrypting and decrypting is never stored on the system. It must be entered each time the software starts up and is just kept in memory. This prohibts anyone who has physical access to the machine from recovering any sensitive data.

Setup Instructions

Download and install Go from https://golang.org/dl/ Set your GOPATH variable to whatever you want

export GOPATH=~/GoPath

Install calendarpi by running

go get github.com/sgoertzen/calendarpi

Install all dependencies by running

go get -t ./...

Finally switch to the code directory

cd $GOPATH/src/github.com/sgoertzen/calendarpi

To build:

go build

To test:

go test

To run:

./calendarpi

First run:

The first time the software runs it will error out and create a conf.json file in the root directory. You will need to edit this file and put in proper values.

Usage

Once the software is running point your browser to https://yourmachinename:10443/ (Or whatever port you put into the config file)

Installing Go from source

If you are so inclined you can install go from source

git clone https://go.googlesource.com/go
cd go
git checkout go1.4
cd src
./all.bash

Download and install Mecurial by running:

sudo apt-get install mercurial

Run the following commands in terminal

go get google.golang.org/api/calendar/v3
go get golang.org/x/oauth2
go get github.com/stretchr/testify/assert
go get github.com/kennygrant/sanitize