1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
|
Cabal-Version: 3.0
Name: erebos
Version: 0.1.7
Synopsis: Decentralized messaging and synchronization
Description:
Library and simple CLI interface implementing the Erebos identity
management, decentralized messaging and synchronization protocol, along
with local storage.
Erebos identity is based on locally stored cryptographic keys, all
communication is end-to-end encrypted. Multiple devices can be attached to
the same identity, after which they function interchangeably, without any
one being in any way "primary"; messages and other state data are then
synchronized automatically whenever the devices are able to connect with
one another.
See README for usage of the CLI tool.
License: BSD-3-Clause
License-File: LICENSE
Homepage: https://erebosprotocol.net/erebos
Author: Roman Smrž <roman.smrz@seznam.cz>
Maintainer: roman.smrz@seznam.cz
Category: Network
Stability: experimental
Build-type: Simple
Extra-Doc-Files:
README.md
CHANGELOG.md
Extra-Source-Files:
src/Erebos/ICE/pjproject.h
Flag ice
Description: Enable peer discovery with ICE support using pjproject
Flag ci
description: Options for CI testing
default: False
manual: True
source-repository head
type: git
location: git://erebosprotocol.net/erebos
common common
ghc-options:
-Wall
-fdefer-typed-holes
if flag(ci)
ghc-options:
-Werror
-- sometimes needed for backward/forward compatibility:
-Wno-error=unused-imports
build-depends:
base ^>= { 4.15, 4.16, 4.17, 4.18, 4.19, 4.20 },
default-extensions:
DefaultSignatures
ExistentialQuantification
FlexibleContexts
FlexibleInstances
FunctionalDependencies
GeneralizedNewtypeDeriving
ImportQualifiedPost
LambdaCase
MultiWayIf
RankNTypes
RecordWildCards
ScopedTypeVariables
StandaloneDeriving
TypeOperators
TupleSections
TypeApplications
TypeFamilies
TypeFamilyDependencies
other-extensions:
CPP
ForeignFunctionInterface
OverloadedStrings
RecursiveDo
TemplateHaskell
UndecidableInstances
if flag(ice)
cpp-options: -DENABLE_ICE_SUPPORT
library
import: common
default-language: Haskell2010
hs-source-dirs: src
exposed-modules:
Erebos.Attach
Erebos.Chatroom
Erebos.Contact
Erebos.Conversation
Erebos.DirectMessage
Erebos.Identity
Erebos.Network
Erebos.Network.Channel
Erebos.Network.Protocol
Erebos.Object
Erebos.Pairing
Erebos.PubKey
Erebos.Service
Erebos.Set
Erebos.State
Erebos.Storable
Erebos.Storage
Erebos.Storage.Head
Erebos.Storage.Key
Erebos.Storage.Merge
Erebos.Sync
-- Used by test tool:
Erebos.Storage.Internal
other-modules:
Erebos.Flow
Erebos.Object.Internal
Erebos.Storage.Platform
Erebos.Util
c-sources:
src/Erebos/Network/ifaddrs.c
include-dirs:
src
if flag(ice)
exposed-modules:
Erebos.Discovery
Erebos.ICE
c-sources:
src/Erebos/ICE/pjproject.c
include-dirs:
src/Erebos/ICE
includes:
src/Erebos/ICE/pjproject.h
build-tool-depends: c2hs:c2hs
pkgconfig-depends: libpjproject >= 2.9
build-depends:
async >=2.2 && <2.3,
binary >=0.8 && <0.11,
bytestring >=0.10 && <0.13,
clock >=0.8 && < 0.9,
containers >= 0.6 && <0.8,
crypton ^>= { 1.0 },
deepseq >= 1.4 && <1.6,
directory >= 1.3 && <1.4,
filepath >=1.4 && <1.6,
fsnotify ^>= { 0.4 },
hashable >=1.3 && <1.5,
hashtables >=1.2 && <1.4,
iproute >=1.7.12 && <1.8,
memory >=0.14 && <0.19,
mtl >=2.2 && <2.4,
network >= 3.1 && <3.2,
stm >=2.5 && <2.6,
text >= 1.2 && <2.2,
time >= 1.8 && <1.14,
uuid >=1.3 && <1.4,
zlib >=0.6 && <0.8
if os(windows)
hs-source-dirs: src/windows
build-depends:
Win32 ^>= { 2.14 },
else
hs-source-dirs: src/unix
build-depends:
unix ^>= { 2.7, 2.8 },
executable erebos
import: common
default-language: Haskell2010
hs-source-dirs: main
ghc-options: -threaded
main-is: Main.hs
other-modules:
Paths_erebos
Test
Test.Service
Version
Version.Git
autogen-modules:
Paths_erebos
build-depends:
bytestring,
crypton,
directory,
erebos,
haskeline >=0.7 && <0.9,
mtl,
network,
process >=1.6 && <1.7,
template-haskell ^>= { 2.17, 2.18, 2.19, 2.20, 2.21, 2.22 },
text,
time,
transformers >= 0.5 && <0.7,
uuid,
|