segmenteringsfejl

selv i 2018, når moderne, funktionsrige instant messaging-applikationer som Gitter eller den ekstremt populære Slack er lige så gennemgribende som nogensinde, forbliver IRC Den foretrukne kommunikationsmetode for mange udviklere. Det er enkelt, stabilt, allestedsnærværende og vigtigst af alt fuldt decentraliseret. Det er dog en gammel protokol, da IRC har sparket rundt siden begyndelsen af halvfemserne (IRC-protokollen RFC blev offentliggjort i 1993). Som sådan kommer IRC med sine begrænsninger.

en af de mest bemærkelsesværdige for mig er manglen på Meddelelsesarkiv. Alle meddelelser, der sendes fra og modtages af en IRC-klient, gemmes ikke i din maskine, og du får heller ikke en gentagelse af de tidligere samtaler i en kanal, du lige har tilsluttet dig. Hver gang du logger ind på et IRC-chatrum, du får en ren skifer. Dette er ubelejligt, da IRC ofte bruges som en kommunikationskanal uden for båndet. Du tilmelder dig en kanal, efterlader et spørgsmål og venter derefter et par timer på, at nogen svarer, da folk ikke har tendens til at overvåge IRC så ofte som de ville med andre instant messaging-applikationer.

heldigvis og måske ikke overraskende har dette været et løst problem i nogen tid nu. Den hurtigste og enkleste metode er at etablere en permanent forbindelse til IRC-serveren fra en server under vores kontrol, som er den 24/7 og etablere en SSH/TMK-session med den, hver gang vi vil tjekke tilbage på IRC. Når vi er færdige, skal du bare løsne sessionen med C-a d på GNU-skærmen eller C-b d på TM. Dette løser problemet med at savne alle meddelelser sendt i en kanal, mens vi var væk, men det handler om alt hvad du får. Hvis du leder efter en løsning, der tilbyder meget mere end dette, er det tid til at se på bouncers.

Hvad er en bouncer server?

en bouncer-server er en server, Vi bruger som fuldmagt til at få adgang til IRC. En udsmider vil tage vores IRC detaljer og etablere en forbindelse til en IRC-server på vores vegne og endda deltage i en liste over foruddefinerede kanaler.

vi opretter derefter forbindelse til denne bouncer-server fra vores IRC-klient i stedet for direkte til IRC-serveren, og fra dette tidspunkt vil vores meddelelser blive “hoppet på” af bouncer til målserveren.

Bouncers tilbyder flere fordele, herunder:

  • vedvarende server-og kanalsessioner
  • logning af kanalsamtaler til en tekstfil til arkivering
  • Bouncer-brugergodkendelse
  • automatisk IRC-servergodkendelse via NickServ eller SASL
  • Automatiser IRC-brugerstatusser (forlad & væk meddelelser osv.)
  • og meget mere!

opsætning af bouncer-serveren på Ave

vi skal oprette vores egen Bouncer-server ved hjælp af NC, den mest populære bouncer-serverapplikation, på en billig Ave EC2-forekomst.

Start en ny Ubuntu Server 16.04 t2.nano EC2-forekomst med alle standardindstillingerne undtagen følgende:

  • brugerdata: installer bouncer-programmet, Opret en bruger til processen og en mappe, hvor den kan gemme sine filer og en systemd-enhedsfil for at starte den ved opstart.
#!/bin/bashapt-get update && apt-get dist-upgrade -y && \apt-get install -y znc znc-dev znc-perl znc-python znc-tcl && \useradd -M -s /bin/false znc && usermod -L znc && \mkdir /opt/znc && \cat > /etc/systemd/system/znc.service <<- EOFDescription=ZNC IRC BouncerExecStart=/usr/bin/znc -d /opt/zncExecReload=/bin/kill -HUP $MAINPIDKillMode=processRestart=alwaysType=forkingUser=zncWantedBy=multi-user.targetAlias=znc.serviceEOF

da systemd-enhedsfilen er placeret direkte i /etc/systemd/system, køres den automatisk ved opstart. Der er ingen grund til at aktivere det.

  • undernet: sørg for, at forekomsten lanceres i et offentligt undernet med en internetportal tilsluttet, så den er let tilgængelig fra internettet.
  • EBS-lydstyrke: din adgangskode til NC (Bouncer), IRC-serveradgangskode og IRC-samtalelogfiler gemmes i almindelige tekstfiler, så jeg anbefaler kraftigt, at du krypterer lydstyrken.
  • Opret en ny sikkerhedsgruppe, der skal knyttes til den, så følgende porte er åbne:
    • SSH: så vi kan konfigurere forekomsten
    • TCP-port 7078 (enhver uforbeholden port vil faktisk gøre): Lytteport
  • indstil dets” navn ” – tag til noget meningsfuldt, hvis du ønsker det

generer nu en ny elastisk IP-adresse og knyt den til forekomsten.

installation af SNC

SSH i din nyoprettede EC2-forekomst og kør Snc-installationsprocessen første gang, som beder os om at indstille en lytteport til bouncer og oprette en administratorkonto. Vælg indstillingerne som nedenfor.

$ znc --makeconf Checking for list of available modules... -- Global settings -- Listen on port (1025 to 65534): 7078 Listen using SSL (yes/no) : yes Verifying the listener... Unable to locate pem file: , creating it Writing Pem file ... Enabled global modules -- Admin user settings -- Username (alphanumeric): admin Enter password: Confirm password: Nick : Alternate nick : Ident : Real name (optional): Bind host (optional): Enabled user modules Set up a network? (yes/no) : no Writing config ... To connect to this ZNC you need to connect to it as your IRC server using the port that you supplied. You have to supply your login info as the IRC server password like this: user/network:pass. Try something like this in your IRC client... /server <znc_server_ip> +7078 admin:<pass> To manage settings, users and networks, point your web browser to https://<znc_server_ip>:7078/ Launch ZNC now? (yes/no) : no

dette vil generere en konfigurationsfil, som vil blive gemt i hjemmekataloget for den bruger, vi ssh ‘ D I as (ubuntu hvis du bruger den standard Ubuntu-leverede Ami-Server). Lad os flytte de nyoprettede konfigurationsfiler fra denne mappe til /opt/znc og give znc bruger ejerrettigheder til det.

$ sudo mv ~/.znc/* /opt/znc$ rmdir ~/.znc$ sudo chown -R znc:znc /opt/znc

nu Kan du starte NC

$ sudo systemctl start znc

sørg for, at Nc er startet med succes

$ systemctl status znc● znc.service - ZNC IRC Bouncer Loaded: loaded (/etc/systemd/system/znc.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2018-07-29 13:02:07 UTC; 21min ago Process: 1181 ExecStart=/usr/bin/znc -d /opt/znc (code=exited, status=0/SUCCESS) Main PID: 1245 (znc) Tasks: 1 Memory: 10.8M CPU: 54ms CGroup: /system.slice/znc.service └─1245 /usr/bin/znc -d /opt/znc

konfiguration af NC

det første konfigurationstrin er afsluttet. Nu skal vi tilføje den bruger, som vi vil logge ind som, og et IRC-netværk, der skal knyttes til den bruger.

for at anvende de resterende indstillinger på bounceren opretter vi forbindelse til dens frontend for internetkonfiguration, tilgængelig på den port, vi konfigurerede den til at lytte til (i mit tilfælde port 7078). Så i din bro. ser skal du indtaste følgende URL: https://<bouncer_ip_address>:7078. Hvis du får en “manglende HTTPS-certifikat” – fejl eller lignende, kan du sikkert ignorere dette og bede din bro.ser om at fortsætte. Log nu ind som den administratorbruger, du oprettede før, ved hjælp af den adgangskode, du indtastede.

frontend

når du logger ind, kan du klikke på menupunktet “Globale indstillinger” i højre side for at se på den samlede konfiguration af bouncer.

NNC installerer en samling moduler (Delte Objekter) i /usr/lib/znc, som du kan indlæse eller aflæse, mens dæmonen kører. Hvis du ruller ned til bunden, ser du en liste over de globale moduler, der påvirker bouncerens funktion, som du kan aktivere/deaktivere ved at skifte afkrydsningsfelterne i kolonnen “Navn”. I mit tilfælde har jeg” log ” aktiveret, da jeg vil have min bouncer til at gemme i en tekstfil alle de meddelelser, der sendes i de kanaler, jeg er medlem af.

globale moduler

Klik på “Administrer brugere” i højre menu for at hente brugerkonfigurationspanelet. Klik nu på” Tilføj ” for at tilføje en ny bruger og udfyld detaljerne: brugernavn, adgangskode (Bemærk Denne adgangskode vil kun blive brugt til at godkende dig selv med NC, den vil ikke blive brugt med IRC-serveren), IRC-detaljer og en liste over moduler, som du måske vil indlæse for denne bruger specifikt.

NC brugeroplysninger

klik derefter på “Gem og Fortsæt” nederst, så vi kan tilføje et IRC-netværk til denne bruger.

tilføjelse af et netværk til en bruger

udfyld detaljerne for IRC-netværket, som denne bruger vil blive tilknyttet, og aktiver eventuelt alle moduler, som du vil indlæse automatisk, når du opretter forbindelse til dette netværk. Et sådant modul kan være sasl, hvis du ønsker at godkende ved hjælp af denne metode med IRC-serveren. Jeg vil aktivere dette modul på dette netværk.

i tekstfeltet” servere i dette IRC-netværk ” indtaster du oplysningerne om den IRC-server, du vil oprette forbindelse til i formatet

<server> <port> <irc_password>

Tilføj et plustegn til porten for at angive en SSL-forbindelse. <irc_password> er den adgangskode, du brugte til at registrere til IRC-serveren via kommandoen /NickServ, som er helt adskilt fra den adgangskode, du har indstillet til at godkende til bounceren selv ovenfor.

for eksempel for at oprette forbindelse til Freenode IRC-netværket via SSL med en tidligere registreret konto, ville indholdet af denne tekstboks være

irc.freenode.net +6697 myNickServPassword123

ellers kan det simpelthen være

irc.freenode.net 6667

konfiguration af IRC-netværket

du vil bemærke, at din IRC-adgangskode er gemt i almindelig tekst på serveren. Derfor anbefalede jeg under VPS-installationstrinnene at kryptere din EBS-lydstyrke og naturligvis have meget stram kontrol over, hvem der kan få adgang til din bouncer-server. Det anbefales at låse VPS-sikkerhedsgruppen ned for kun at tillade indgående forbindelser fra en meget lille delmængde af IP ‘ er.

Klik på “Gem og fortsæt” igen. Du kan nu eventuelt tilføje en liste over kanaler, du vil have bouncer til at logge dig ind, men det vil også huske dem, du slutter dig til, når du opretter forbindelse til det.

vi har nu en VPS (Virtual Private Server), der er vært for en fuldt funktionel installation af NC. Den sidste ting at gøre er at pege vores IRC-klient på udsmideren.

tilslutning til bouncer

jeg skal bruge irssi til at oprette forbindelse til bouncer. Her er de trin, jeg fulgte for at få det til at fungere. Din kilometertal kan variere på en anden klient som f.eks.

start irssi med angivelse af det kaldenavn, der skal bruges til at oprette forbindelse til bouncer

$ irssi -n <username>

Opret et nyt netværk kaldet freenodebnc, og tilføj bouncer-detaljerne til det. Da jeg opretter forbindelse til Freenode IRC-serveren via SSL, bruger jeg den port, den udsætter for sikre forbindelser, 6697 og sender -ssl – flaget ind. username/freenode er brugernavnet og netværkskombinationen, som vi oprettede på panelet user config. password er den adgangskode, Vi bruger til at godkende med NC, ikke til IRC-serveren.

/network add freenodebnc/server add -net freenodebnc -auto -ssl <bouncer_ip> 6697 username/freenode:password

Kør følgende kommandoer for at gemme disse ændringer i irssi-konfigurationsfilen og oprette forbindelse til bouncer.

/save/connect freenodebnc

hvis du har indlæst SASL-modulet (du kan kontrollere, om det er indlæst ved at køre /msg *status ListModules), skal du konfigurere det på dette tidspunkt. Så når du er tilsluttet bouncer, skal du køre følgende kommandoer på din IRC-klient.

/query *saslmechanism external plainset <NickServName> <password>

hvor NickServName er dit registrerede brugernavn hos IRC-serveren og password den adgangskode, du bruger til at godkende til den førnævnte server.

Forbind nu igen til IRC-netværket med det omkonfigurerede SASL-modul.

/msg *status jump

det kan tage et øjeblik for bouncer at etablere forbindelsen (især hvis du opretter forbindelse via SSL og bruger godkendelsesmekanismer som SASL), men efter dette får du en permanent, sikker session med IRC-serveren, som du er fri til at holde pause og genoptage, når du vil. Glad chatter!