summarylogtreecommitdiffstats
path: root/electrumx.install
blob: 2cbec72882e4f4aec2786d585b90f0af9959b080 (plain)
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
_es_user=electrumx
_es_group=electrumx

post_install() {
  mkdir -p /etc/electrumx
  mkdir -p /srv/electrumx
  _mkuser
  _mkssl
  chown -R $_es_user:$_es_group /etc/electrumx /srv/electrumx
  printf "%b\n" "$ecsda"
}

post_upgrade() {
  _mkuser
  chown -R $_es_user:$_es_group /etc/electrumx /srv/electrumx
  printf "%b\n" "$ecsda"
}

post_remove() {
  _rmuser
  rm -rf /etc/electrumx /srv/electrumx
}

_mkssl() {
  echo -n "Enabling SSL..." # https://en.bitcoin.it/wiki/Enabling_SSL_on_original_client_daemon
  openssl genrsa -out /etc/electrumx/server.pem 2048
  expect <<EOF | perl -ne 'print if /-----BEGIN\sCERTIFICATE-----/../-----END\sCERTIFICATE-----/' > /etc/electrumx/server.cert
    spawn openssl req -new -x509 -nodes -sha1 -days 3650 -key /etc/electrumx/server.pem
    expect "Country*" {
      send "\r"
    }
    expect "State*" {
      send "\r"
    }
    expect "Locality*" {
      send "\r"
    }
    expect "Organization*" {
      send "\r"
    }
    expect "Organizational*" {
      send "\r"
    }
    expect "Common*" {
      send "\r"
    }
    expect "Email*" {
      send "\r"
    }
    expect eof
EOF
  echo "done"
}

_mkuser() {
  getent passwd $_es_user &>/dev/null || {
    echo -n "Creating electrumx user... "
    grep -E "^$_es_group:" /etc/group >/dev/null || groupadd $_es_group
    useradd -m -d /etc/electrumx -g $_es_group -s /usr/bin/nologin $_es_user
    echo "done"
  }
}

_rmuser() {
  echo -n "Removing electrumx user... "
  userdel -rf $_es_user 2>/dev/null
  echo "done"
}

read -d '' ecdsa <<'EOF'
########################################################################
########################################################################
##                                                                    ##
##  ElectrumX Server                                                  ##
##  ________________                                                  ##
##                                                                    ##
##  To start electrumx:                                               ##
##                                                                    ##
##      # systemctl start electrumx                                   ##
##                                                                    ##
##  To communicate with electrumx as a normal user:                   ##
##                                                                    ##
##      $ electrumx-rpc -p 8000 <command>                             ##
##                                                                    ##
##  To connect to electrumx:                                          ##
##                                                                    ##
##      $ electrum --server 127.0.0.1:50002:s --oneserver             ##
##                                                                    ##
##  Config:        /etc/electrumx/electrumx.conf                      ##
##  Database:      /srv/electrumx                                     ##
##  Documentation: /usr/share/doc/electrumx                           ##
##                                                                    ##
##                                                                    ##
##                         ';,;:.                                     ##
##                       'o'   .;d.                                   ##
##                       K.      :l                                   ##
##                       cl     .O,                                   ##
##                        .c:cclc.                                    ##
##              .;::;.     .;ko,.     ':::'     .',,,.                ##
##            .OMMMMMWo  ,d,.  .oo  cXMMMMMX:  do.  .:d.              ##
##           x MMMMMMMMxlX.      kdoMMMMMMMMMoxl      '0              ##
##            oMMMMMMMN;'K,     .Oc;NMMMMMMMX,ld      ;k              ##
##             :0WMMNk.  .cl;,;cl,  'kWMMMWx.  :o:,';cc               ##
##                ..        .'.       .oWc.      .''.                 ##
##                                  'oc;,;lo.                         ##
##                                 ,O.     .0.                        ##
##                                 :k      .0.                        ##
##                                  cl,...:o,                         ##
##                                    .,,,.                           ##
##                                                                    ##
##                                                                    ##
########################################################################
########################################################################
EOF