inscore

package module
v0.0.0-...-4f42cbb Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 12, 2026 License: GPL-3.0 Imports: 12 Imported by: 0

README

Inscore - INSA Score

⚠️ CE MODULE EST TRÈS EXPÉRIMENTAL - TOUT PEUT CASSER À TOUT MOMENT ⚠️

Qu'est-ce qu'inscore ?

Inscore est une librairie permettant la manipulation de divers services web de l'INSA de Rennes.

Module expérimental, utilisez-le à vos risques et périls.

Quels services sont supportés ?

Les services actuellement supportés par le module sont :

  • Authentification CAS avec 2FA
  • Récupération de notes depuis "Mon Dossier Web"

Utilisation

L'étape d'authentification est très simple :

    cas, err := inscore.NewCAS("[REDIRECT_URL]")
    if err != nil {
        panic(err)
    }

    cas.Login("[USERNAME]", "[PASSWORD]", "[SECRET]")

Une fois le client http authentifié, il est possible de l'utiliser afin de faire des requêtes et d'acceder à d'autres services.

Pour récupérer les notes :

    mdw := inscore.NewMDW(cas)

	grades, err := mdw.GetGrades()
	if err != nil {
		panic(err)
	}

Un exemple de récupération et d'affichage de notes est disponible ici.

Comment obtenir son secret TOTP ?

Pour passer l'authentification à 2 facteurs, inscore repose sur les codes TOTP. Il faut alors récupérer le "secret" de l'utilisateur auquel se connecter, qui permet à inscore de générer un code pour la double authentification.

Pour récupérer sont secret, il suffit d'aller sur OTP Manager et de suivre la procédure afin de générer un QR code. Une fois le code scanné, il suffit de récupérer la valeur du query "secret" de l'url.

Note: OTP Manager n'est accessible que depuis le réseau de l'INSA.

Documentation

Pas de documentation disponible pour l'instant.

Bindings

Une compatibilité de ce module est prévue avec Android/iOS pour la récupération des notes.

Bugs / Problèmes

Le module est expérimental et peut ne pas fonctionner correctement :

  • La récupération de notes est encore très instable et ne fonctionne que dans certains cas.
  • Ce module ne permet pas encore l'envoi d'un code de 2FA par mail.
  • Peu de services pris en charge pour le moment.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var CAS_URL string = "https://cas.insa-rennes.fr/cas/login"
View Source
var MDW_CAS_URL string = "http://mdw.insa-rennes.fr/login/cas"
View Source
var MDW_URL string = "https://mdw.insa-rennes.fr"

Functions

func GenTOTPCode

func GenTOTPCode(secret string) (string, error)

Types

type CAS

type CAS struct {
	Client *http.Client
	Jar    *cookiejar.Jar
	URL    string
}

func NewCAS

func NewCAS(redirect string) (*CAS, error)

func (*CAS) Login

func (c *CAS) Login(user string, pass string, secret string) error

type Grade

type Grade struct {
	Name    string  `json:"name"`
	Score   string  `json:"score"`
	Details []Grade `json:"details"`
}

func (*Grade) JSON

func (g *Grade) JSON() (string, error)

type MDW

type MDW struct {
	*Vaadin
	Client *http.Client
}

func NewMDW

func NewMDW(c *CAS) *MDW

func (*MDW) GetGrades

func (m *MDW) GetGrades() (*Grade, error)

func (*MDW) Init

func (m *MDW) Init() error

type Node

type Node struct {
	Node     int         `json:"node"`
	Type     string      `json:"string"`
	Key      string      `json:"key"`
	Value    interface{} `json:"value"`
	AddNodes []int       `json:"addNodes"`
}

type Vaadin

type Vaadin struct {
	UiId int
	Sync int
	Csrf string
}

func (*Vaadin) GenInitURL

func (v *Vaadin) GenInitURL() string

func (*Vaadin) GenURL

func (v *Vaadin) GenURL() string

func (*Vaadin) VSync

func (v *Vaadin) VSync()

type VaadinData

type VaadinData struct {
	Changes []Node          `json:"changes"`
	Execute [][]interface{} `json:"execute"`
	// contains filtered or unexported fields
}

func NewVD

func NewVD(data []byte) (*VaadinData, error)

func (*VaadinData) GetGrades

func (v *VaadinData) GetGrades() (*Grade, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL