install.sh 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #!/bin/bash
  2. ################################################################################
  3. # Author: Fred (support@qo-op.com)
  4. # Version: 0.1
  5. # License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
  6. ################################################################################
  7. MY_PATH="`dirname \"$0\"`" # relative
  8. MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
  9. echo "GPATH=$MY_PATH" > $MY_PATH/.install/.GPATH
  10. source $MY_PATH/.install/.GPATH
  11. init_loc="$MY_PATH/shell/init.sh"
  12. now=$(date +%Y-%m-%d)
  13. unset err
  14. ## Récupère les données du profile
  15. [[ -f $MY_PATH/.profile ]] && source $MY_PATH/.profile
  16. ## Récupère les arguments
  17. args="$@"
  18. [[ $args =~ all ]] && repOption=o
  19. [[ $args =~ noptions ]] && repOption=n
  20. [[ $args =~ force ]] && force_req=o
  21. [[ $args =~ noask ]] && noask=o
  22. ## Vérifie le type de système
  23. [[ $(uname -a | grep arm) ]] && isARM=YES || unset isARM
  24. if [[ $(grep -E 'stretch|18.|19.' /etc/os-release) ]]; then OS=stretch;
  25. elif [[ $(grep buster /etc/os-release) ]]; then OS=buster;
  26. else echo "${c_red}Votre OS n'est pas supporté$c_"; exit 1; fi
  27. echo -e "$OS\n$isARM" > .install/.OS
  28. unset err
  29. ## Vérifie si le script est en lancé par root
  30. if [ "$EUID" -eq 0 ]
  31. then echo -e "${c_red}Veuillez ne pas executez ce script en root. Choisissez un utilisateur pour votre serveur G1sms+ (nous recommandons l'utilisateur pi)$c_"
  32. exit 1
  33. fi
  34. ## Update G1sms+ code
  35. git pull || err+=1
  36. chmod u+x $MY_PATH/.install/*.sh
  37. $MY_PATH/.install/export_colors.sh
  38. [[ -f ~/.bash_aliases ]] && source ~/.bash_aliases
  39. ## Vérifie si IPFS est installé
  40. if [[ $force_req == "o" || -z $(which ipfs) || -z $(which gammu) ]];then
  41. echo -e "${c_yellow}IPFS ou gammu n'ont pas été détectés sur votre machine, nous allons installer tous les prérequis...$c_"
  42. $MY_PATH/.install/1-install_requirements.sh silkaj ipfs gammu || err+=1
  43. $MY_PATH/.install/2a-configure_ipfs_layer.sh || err+=1
  44. else
  45. echo -e "${c_green}IPFS et gammu sont déjà installé !$c_"
  46. fi
  47. echo -e "${c_yellow}Ce script va désormais configurer votre noeud G1sms+$c_"
  48. if [[ -f $MY_PATH/.install/templates/init.sh ]]; then
  49. [[ ! $ADMINPSEUDO ]] && echo -e "${c_light}Votre PSEUDO? (celui de votre Compte membre Duniter)$c_" && read ADMINPSEUDO
  50. [[ "$ADMINPSEUDO" == "" ]] && echo -e "${c_red}IMPOSSIBLE DE CONTINUER$c_" && exit 1
  51. [[ ! $ADMINPHONE ]] && echo -e "${c_light}Le Numéro de téléphone SMS Admin? (Support de ce noeud) (ex +33611223344)$c_" && read ADMINPHONE
  52. [[ "$ADMINPHONE" == "" ]] && echo -e "${c_red}IMPOSSIBLE DE CONTINUER$c_" && exit 1
  53. [[ ! $MASTERPHONE ]] && echo -e "${c_light}Le numéro de la carte SIM, du module SMS. AUCUNE liaison SMS? Laissez vide (défaut: +33600000000)$c_" && read MASTERPHONE
  54. [[ "$MASTERPHONE" == "" ]] && MASTERPHONE="+33600000000"
  55. [[ ! $ADRESSE ]] && echo -e "${c_light}L'adresse où se trouve votre G1Node pour indiquer où venir chercher ses G1Tag (ex: au G1FabLab de Toulouse)$c_" && read ADRESSE
  56. [[ ! $PIN ]] && echo -e "${c_light}Le code PIN de votre carte SIM ? (ex: 1234)$c_" && read PIN
  57. [[ "$PIN" == "" ]] && PIN="1234"
  58. echo -e "ADMINPSEUDO: $ADMINPSEUDO\nADMINPHONE: $ADMINPHONE\nMASTERPHONE: $MASTERPHONE\nADRESSE: $ADRESSE\nPIN: $PIN"
  59. [[ $noask != "o" ]] && echo -e "${c_light}${c_blue}LES PARAMETRES SONT BONS? Appliquer? ENTER ou CTRL-C ? (Editez le fichier .profile si incorrect)$c_" && read
  60. [[ -f shell/init.sh ]] && mv shell/init.sh shell/init.sh.old
  61. cp $MY_PATH/.install/templates/init.sh shell/init.sh || err+=1
  62. sed -i s/_MASTERPHONE/$MASTERPHONE/g $init_loc
  63. sed -i s/_ADRESSE/$ADRESSE/g $init_loc
  64. sed -i s/_ADMINPHONE/$ADMINPHONE/g $init_loc
  65. sed -i s/_ADMINPSEUDO/$ADMINPSEUDO/g $init_loc
  66. if [[ ! -f $MY_PATH/.profile ]]; then
  67. cp $MY_PATH/.install/templates/.profile $MY_PATH/
  68. sed -i s/_MASTERPHONE/$MASTERPHONE/g $MY_PATH/.profile
  69. sed -i s/_ADRESSE/$ADRESSE/g $MY_PATH/.profile
  70. sed -i s/_ADMINPHONE/$ADMINPHONE/g $MY_PATH/.profile
  71. sed -i s/_ADMINPSEUDO/$ADMINPSEUDO/g $MY_PATH/.profile
  72. sed -i s/_PIN/$PIN/g $MY_PATH/.profile
  73. fi
  74. else
  75. echo -e "${c_red}init.sh introuvable...$c_"
  76. err+=1
  77. exit 1
  78. fi
  79. ## Configuration de gammu
  80. $MY_PATH/.install/2b-configure_gammu.sh || err=1
  81. ## Installations optionnels
  82. repOld=$repOption
  83. [[ -z $repOption ]] && echo -e "${c_yellow}Voulez-vous installer les modules complémentaires de copylaradio ? (o/n)$c_" && read repOption
  84. if [[ $repOption =~ ^(o|1|yes|options|a|all)$ ]]; then $MY_PATH/.install/3-install_copylaradio.sh || err+=1; fi; repOption=$repOld
  85. [[ -z $repOption ]] && echo -e "${c_yellow}Voulez-vous installer l'interface web Kalkun ? (o/n)$c_" && read repOption
  86. if [[ $repOption =~ ^(o|1|yes|options|a|all)$ ]]; then isKalkun=1; $MY_PATH/.install/4a-install_kalkun.sh || err+=1; fi; repOption=$repOld
  87. [[ -z $repOption && -z $isKalkun ]] && echo -e "${c_yellow}Voulez-vous installer l'interface web playSMS ? (o/n)$c_" && read repOption
  88. if [[ $repOption =~ ^(o|1|yes|options|a|all)$ ]]; then $MY_PATH/.install/4b-install_playsms.sh || err+=1; fi; repOption=$repOld
  89. if [[ $err ]]; then
  90. echo -e "---\n${c_red}L'installation générale n'est mal déroulé =($c_"
  91. else
  92. echo -e "---\n${c_green}Félécitation ! L'installation de votre noeud G1SMS s'est terminé avec succès !\nBienvenue à bord =)$c_"
  93. fi
  94. exit 0