1
|
Spécifications du Système d'Information d'Illyse
|
2
|
|
3
|
Références
|
4
|
TODO : s'inspirer de http://www.ffdn.org/wiki/doku.php?id=travaux:specifications_si
|
5
|
SI NDN (django): http://git.ndn.cx/gitweb/?p=si_ndn.git;a=summary (basé sur https://gitorious.org/si-fai )
|
6
|
SI Rhizome (module dolibarr): http://doc.rhizome-fai.net/doku.php?id=howto:outils_asso:dolibarr
|
7
|
http://xkcd.com/844/
|
8
|
http://xkcd.com/353/
|
9
|
Que veut-on gérer dans le S.I. ?
|
10
|
Informations personnelles :
|
11
|
|
12
|
adhésion + validation d'adhésion
|
13
|
|
14
|
page d'accès à ses infos personnelles (état civil, etc) [LDAP]
|
15
|
|
16
|
génération factures et accès à ses factures
|
17
|
|
18
|
vérification dans Dolibarr que l'adhérent est bien a jour de ses cotisations (base mysql) + envoi d'alertes
|
19
|
|
20
|
changement de mdp [LDAP]
|
21
|
|
22
|
upload de clés RSA (pour l'accès aux serveurs) [LDAP]
|
23
|
|
24
|
upload de clé publique GPG pour chiffrer les mails envoyés par le SI [LDAP ?] (déjà implémenté dans le SI de NDN, en django (j'ai codé cette fonctionnalité et prévois de faire un module Python indépendant de Django, donc si vous avez un SI en Python, vous pourrez l'utiliser) \o/)
|
25
|
|
26
|
Services :
|
27
|
|
28
|
ADSL
|
29
|
|
30
|
tests d'éligibilité (interface avec les API des opérateurs de collecte) (FDN fournit une API pour ça, mais on peut utiliser ça + API d'autres opérateurs)
|
31
|
|
32
|
demande d'ouverture d'accès ADSL par l'adhérent
|
33
|
|
34
|
ouverture d'accès ADSL (dont allocation d'IPs v4&v6)
|
35
|
|
36
|
suivi des commandes de lignes aux opérateurs de collecte
|
37
|
|
38
|
avoir les infos techniques de sa ligne (débits montant, descendant, distance au NRA, bruit) : Se renseigner si l'API Lasotel renvoie ces informations
|
39
|
|
40
|
envoi des informations de connexion
|
41
|
|
42
|
VPN
|
43
|
|
44
|
demande d'ouverture d'accès VPN par l'adhérent
|
45
|
|
46
|
ouverture d'accès VPN (dont allocation d'IPs v4&v6)
|
47
|
|
48
|
envoi des informations de connexion dont certificats pour le VPN
|
49
|
|
50
|
historique des abonnements (quels services, de quand à quand, quelles IP) [BDD]
|
51
|
|
52
|
consultation de la bande passante consommée par chaque abonné et BP moyenne, histoire de filer un point de comparaison
|
53
|
|
54
|
Basse priorité :
|
55
|
|
56
|
mail (boîtes, alias) (basse priorité) → que pour les admins, membres du ca [LDAP]
|
57
|
|
58
|
contrôle d'accès aux serveurs (login, sudo) (basse priorité) → que pour les admins [LDAP]
|
59
|
|
60
|
délégation DNS / reverse (basse priorité) → que pour les admins [LDAP]
|
61
|
|
62
|
ajout aux ML (utiliser l'intégration sympa/ldap ?) (basse priorité)
|
63
|
|
64
|
On fait pas :
|
65
|
|
66
|
gestion de tickets de hotline NON, dans Redmine
|
67
|
|
68
|
Comment communiquer les données sensibles ?
|
69
|
|
70
|
Mots de passe
|
71
|
|
72
|
- main propre
|
73
|
|
74
|
- mails chiffrés
|
75
|
|
76
|
- pas de communication de mdp : l'adhérent le saisit lors de l'adhésion en ligne. Pas valable pour les adhésions offline.
|
77
|
|
78
|
- lien zerobin en burn after reading
|
79
|
|
80
|
- méthode Grenode : l'adhérent fournit une clé RSA, puis se connecte en ssh sur une machine pour initialiser son mdp)
|
81
|
|
82
|
Certificats
|
83
|
|
84
|
- main propre
|
85
|
|
86
|
- mails chiffrés GPG (mais pas automatiqument)
|
87
|
|
88
|
- « vraie » procédure asymétrique style PKI (demande de signature, etc => c'est l'adhérent qui crée lui même les clés privées, aucun fichier sensible ne circule) -> lourd à mettre en œuvre (exemple : EJBCA)
|
89
|
|
90
|
- publier et maintenir la CRL
|
91
|
|
92
|
- SSH (grenode style)
|
93
|
|
94
|
Niveaux d'accès
|
95
|
anonyme
|
96
|
|
97
|
demande d'adhésion, éligibilité
|
98
|
|
99
|
adhérent
|
100
|
|
101
|
correction des données personnelles
|
102
|
|
103
|
changement / réinitialisation mdp
|
104
|
|
105
|
demande d'ouverture accès ADSL/VPN
|
106
|
|
107
|
abonné
|
108
|
|
109
|
délégation [reverse] DNS
|
110
|
|
111
|
admin
|
112
|
|
113
|
validation des adhésions
|
114
|
|
115
|
gestion des ouvertures d'accès ADSL/VPN (radius)
|
116
|
|
117
|
sysadmin
|
118
|
|
119
|
gestion de tous les groupes (dont admin, sysadmin)
|
120
|
|
121
|
contrôle d'accès aux machines
|
122
|
|
123
|
gestion du mail
|
124
|
|
125
|
gestion du dns
|
126
|
|
127
|
Nécessité d'une base de données ?
|
128
|
Si oui, postgresql ?
|
129
|
ODJ 3/5/13
|
130
|
- Clarifier et valider l'organisation des données à travers tous nos systèmes :
|
131
|
* Où seront les données ?
|
132
|
* À quel système servent-elles ?
|
133
|
* Comment sont-elles synchronisées entre elles ?
|
134
|
- En déduire le modèle de données de la base interne du SI
|
135
|
- En déduire les interactions avec les systèmes tiers (LDAP, sympa,dolibar,
|
136
|
etc...)
|
137
|
- Valider le choix d'un framework
|
138
|
- Définir les modules de travail : (ex : gestion des membres, test
|
139
|
éligibilité, abonnements aux services, etc...)
|
140
|
- Définir grossièrement l'aspect graphique du SI
|
141
|
- Définir les tâches de travail et se les répartir
|
142
|
*==> mettre le CR de ce soir dans https://www.illyse.org/issues/140
|
143
|
Il a été décidé de faire gérer la facturation dans le SI. Mais pour le début on reste sur dolibarr, cependant, il n'y aura pas de transfert de données de SI vers Dolibarr.
|
144
|
*
|
145
|
Choix technique
|
146
|
Dév standalone en python
|
147
|
Base postgresql
|
148
|
Passerelle vers Dolibarr (tréso et facturation)
|
149
|
TODO :
|
150
|
- trouver un nom, COIN : Outil pour un Internet Neutre
|
151
|
- monter un depôt git : quelle machine ? => golgoth vm (une VM juste pour ça ?)
|
152
|
Modèles :
|
153
|
|
154
|
members :
|
155
|
- id
|
156
|
- ldap_cn
|
157
|
- firstname
|
158
|
- lastname
|
159
|
- address
|
160
|
- postal_code
|
161
|
- city
|
162
|
- statut (Demande d'adhésion, Adhérent, non adhérent)
|
163
|
- entry_date
|
164
|
- resign_date
|
165
|
membership_fees :
|
166
|
- id
|
167
|
- member_id
|
168
|
- amount
|
169
|
- date
|
170
|
crypto_keys :
|
171
|
- id
|
172
|
- key
|
173
|
- type (GPG / RSA)
|
174
|
- member_id
|
175
|
services : (VPN, ADSL, Marque blanche FDN)
|
176
|
- id
|
177
|
- name
|
178
|
offers : (VPN, ADSL Lasotel tarif X, ADSL Lasotel tarif Y, ADSL Nerim, FDN tarif X, etc...)
|
179
|
- id
|
180
|
- name
|
181
|
- service_id
|
182
|
- fees
|
183
|
- initial_fees
|
184
|
- billing_period (month, year,...)
|
185
|
adsl_subscriptions :
|
186
|
- id
|
187
|
- offer_subscription_id
|
188
|
- phone_number
|
189
|
- address
|
190
|
- postal_code
|
191
|
- city
|
192
|
vpn_subscribtions :
|
193
|
- id
|
194
|
- offer_subscription_id
|
195
|
ip_addresses :
|
196
|
- ip
|
197
|
- type (v4, v6)
|
198
|
- service_id
|
199
|
offer_subscription_ip
|
200
|
- offer_subscription_id
|
201
|
- ip
|
202
|
offer_subscription :
|
203
|
- id
|
204
|
- member_id
|
205
|
- offer_id
|
206
|
- subscription_date
|
207
|
- resign_date
|
208
|
- commitment
|
209
|
invoices :
|
210
|
- id
|
211
|
- status (draft, validated/due, paid)
|
212
|
- date // date d'émission
|
213
|
- date_due // date d'échéance
|
214
|
payments :
|
215
|
- id
|
216
|
- invoice_id
|
217
|
- payment_means (Chéque, Virement, Liquide, Prélèvement etc...)
|
218
|
- amount
|
219
|
- date
|
220
|
- reference_number (Numéro chèque, ou virement)
|
221
|
invoices_details :
|
222
|
- id
|
223
|
- label
|
224
|
- price
|
225
|
- quantity
|
226
|
- tax
|
227
|
- invoice_id
|
228
|
- offer_id
|
229
|
Structure du ldap
|
230
|
Note: pour voir correctement l'ascii-art à la con, passer en police monospace (-> boutons en haut à droite)
|
231
|
Racine
|
232
|
LDAP
|
233
|
│
|
234
|
├── dns ──┬── illyse.org ──┬── allow─transfer a.b.c.d
|
235
|
│ │ ├── allow─transfer e.f.g.H
|
236
|
│ │ │
|
237
|
│ │ ├── host @
|
238
|
│ │ │ ├── SOA
|
239
|
│ │ │ ├── NS
|
240
|
│ │ │ └── MX
|
241
|
│ │ │
|
242
|
│ │ ├── host rigel
|
243
|
│ │ │ ├── A 78.193.86.178
|
244
|
│ │ ... └── AAAA 2a01:e34:ec15:6b20::1:11
|
245
|
│ │
|
246
|
│ ├── illyse.net
|
247
|
│ │
|
248
|
│ └── illyse.fr
|
249
|
│
|
250
|
├── mail ──┬── users ──┬── alias1@illyse.fr -> alias2@illyse.org
|
251
|
│ │ ├── alias2@illyse.org -> adresse@illyse.org
|
252
|
│ │ ├── adresse@illyse.org -> illyse.org/adresse/
|
253
|
│ │ ├── ...
|
254
|
│ │ ├── fabien@illyse.org -> fmichel@illyse.org
|
255
|
│ │ └── fmichel@illyse.org -> illyse.org/fmichel/
|
256
|
│ │
|
257
|
│ └── admin ──┬── abuse@illyse.net -> ca@illyse.org
|
258
|
│ ├── postmaster@illyse.fr -> ca@illyse.org
|
259
|
│ ├── ...
|
260
|
│ └── ca@illyse.org -> jfmourgues@illyse.org
|
261
|
│ -> papoudret@illyse.org
|
262
|
│ -> fmichel@illyse.org
|
263
|
│ -> ...
|
264
|
│
|
265
|
├── unix ──┬── users ──┬── fmichel
|
266
|
│ │ │ - nom: Michel
|
267
|
│ │ │ - prenom: Fabien
|
268
|
│ │ │ - mail: fmichel@illyse.org
|
269
|
│ │ │ - uid: 2004
|
270
|
│ │ │ - gid: 2000
|
271
|
│ │ │ - home: /home/fmichel
|
272
|
│ │ │ - shell: /bin/bash
|
273
|
│ │ │ - mot de passe hashe: {SSHA}LASAGNESLASAGNESLASAGNES
|
274
|
│ │ │ - cle publique: YYYYYYYYYYYYYYYYYYYYYYYYYYY
|
275
|
│ │ │ - cle publique: ZZZZZZZZZZZZZZZZZZZZZZZZZZZ
|
276
|
│ │ │ - ...
|
277
|
│ │ │
|
278
|
│ │ ├── jfmourgues
|
279
|
│ │ ├── papoudret
|
280
|
│ │ ...
|
281
|
│ │
|
282
|
│ └─ groups ──┬── users
|
283
|
│ │ - gid: 2000
|
284
|
│ │
|
285
|
│ ├── adherents
|
286
|
│ │ - gid: 2001
|
287
|
│ │ - membre: jfmourgues
|
288
|
│ │ - membre: bjonglez
|
289
|
│ │ - membre: gdesliens
|
290
|
│ │ - membre: ...
|
291
|
│ │
|
292
|
│ ├── sysadmin
|
293
|
│ │ - gid: 2010
|
294
|
│ │ - membre: jfmourgues
|
295
|
│ │ - membre: papoudret
|
296
|
│ │ - membre: ...
|
297
|
│ │
|
298
|
│ ├── loginrigel
|
299
|
│ ├── loginkim
|
300
|
│ ├── logingozer
|
301
|
│ ├── loginall
|
302
|
│ │
|
303
|
│ ├── sudorigel
|
304
|
│ ├── sudokim
|
305
|
│ ├── sudogozer
|
306
|
│ ├── sudoall
|
307
|
│ ...
|
308
|
│
|
309
|
├── radius ──┬── compte radius aaaaaaa
|
310
|
│ │ - rattache a jfmourgues
|
311
|
│ │ - mdp en clair pour CHAP: grandpaSquirrel42
|
312
|
│ │ - mdp hashe pour PAP: {SSHA}CHWALCHWALCHWALCHWALCHWALCHWAL
|
313
|
│ │ - IP: 42.42.42.42
|
314
|
│ │ - ...
|
315
|
│ │
|
316
|
│ ├── compte radius bbbbbbb
|
317
|
│ │ - rattache a bjonglez
|
318
|
│ │ - ...
|
319
|
│ ...
|
320
|
│
|
321
|
├── services ──┬── ldaprep1
|
322
|
├── ldaprep2
|
323
|
├── ldaprep3
|
324
|
├── redmine
|
325
|
│ - mot de passe hashe: {SSHA}XXXXXXXXXXXXXX
|
326
|
├── apache
|
327
|
│ - mot de passe hashe: {SSHA}YYYYYYYYYYYYYY
|
328
|
...
|
329
|
|