Sieve, TortoiseSVN

(Forskjell mellom sider)
Gå til: navigasjon, søk
m
Linje 1: Linje 1:
Sieve ("sil" på engelsk og fransk) er språket e-postfilteret som brukes på '''UiOs''' e-postsystem skrives i. Det blir kjørt hver gang det kommer en ny melding.
+
TortoiseSVN er en Windows Shell Extension for [http://en.wikipedia.org/wiki/Subversion_(software) Subversion].
 +
Dette er et gratis program gitt ut under GNU Lisensen(General Public License). Programmet er et versjonskontrollsystem.
 +
Det vil si at det kan holde orden på forskjellige versjoner av datafiler. Når man foranderer på filer som er sjekket inn i subversion, blir de gamle versjonene lagret i databaser.
 +
På denne måten kan man gå tilbake og sammenlikne med tidligere versjoner.
 +
For mer informasjon, les [http://no.wikipedia.org/wiki/Versjonskontrollsystem  wikipedia sine sider om Versjonskontrollsystem].  
  
For å sette opp et Sieve-filter ved '''UiO''' gjør man slik:
 
  
*Start ''USIT'' sin emacs <tt>/local/bin/emacs</tt> og pass på at du jobber i '''UTF-8'''
 
  
*Start med å laste inn Sieve-bibliotekene. Det gjøres ved å taste <tt>M-x load-library</tt> og så <tt>sieve</tt>. Du får da melding om <tt>Loading sieve...done</tt>
+
==Komme igang==
 +
Det beste stedet for å lære seg mer om TortoiseSVN er å gå til hjelp menyen. Dette gjør du ved å klikke på høyre musetast inne i en mappe.  
 +
Hvis TortoiseSVN er installert, skal det være en egen rad i menyen ved navnet TortoiseSVN. Gå inn her og trykk på Help. Dette vises i bildet under.  
  
*Kjør så <tt>M-x sieve-manage</tt>. Du blir da spurt om server, og denne finner du ved å besøke [https://www.uio.no/brukerinfo/email/ brukerinfo på verdensveven] eller <tt>email info brukernavn</tt> i bofh. For meg så er dette
+
[[image:TortoiseSVN_help.png]]
  
jbofh> email info martiso
 
Account:          martiso
 
Mail server:      cyrus03 (cyrus_IMAP)
 
  
Altså er det <tt>cyrus03</tt> jeg skal skrive inn som server. Etter dette blir du spurt etter brukernavn og passord, og dette er det vanlige brukernavnet og passordet ved '''UiO'''. Velg så <tt>y</tt> <tt>Store password for this session</tt>
+
==Repository==
 +
Repository på norsk betyr oppbevaringssted. Men vi blir bruke den engelske terminologien gjennom denne guiden.
 +
I de følgende seksjonene vil enkel bruk av programmet forklares. 
 +
=== Opprette ===
 +
Vi skal gå gjennom et enkelt eksempel for å vise hvordan man oppretter en "repository". Først Oppretter du en mappe. Finn et passende sted hvor du oppretter en ny mappe med et passende navn. F.eks. kan den hete "SVNRepository". Deretter høyreklikk den nye mappen og velg TortoiseSVN → Create Repository here.
  
*Du har nå fått opp en ny meny i emacs. Den ser ca. ut som dette:
+
[[image:TortoiseSVN_repository.png]]
  
Server  : cyrus03:2000
+
Et "repository" blir da dannet i denne mappen.
 +
Ikke gjør endringer på filene som blir opprettet! Disse filene blir brukt og kontrollert av programmet.
 +
=== Layout ===
 +
Før man importerer data til "repository" kan det være greit å bestemme seg hvordan man vil organisere alle filene. Det er noen anbefalte oppsett som kan gjøre det enklere for deg holde oversikten. Men man kan alltid forandre filstruktur når som helst. Her kan man bruke egen sunn fornuft. Et eksempel som er gitt i guiden er gitt av følgende mapper i "repository":
 +
* Prosjektnavn/trunk - Hovedfiler for utvikling av prosjekt.
 +
* Prosjektnavn/branch - Inneholder "branch"-kopier.
 +
* Prosjektnavn/tag - Inneholder "tag" kopier.
  
3 scripts on server, press RET on a script name edits it, or
+
Denne seksjonen er under utvikling November 2010.
press RET on <new script> to create a new script.
+
        <new script>
+
        sievefilter2.txt<3>
+
  ACTIVE sievefilter2.txt
+
        phpscript
+
  
Hvis du har lagd filter i webmail allerede, vil dette hete <tt>phpscript</tt>. Du kan åpne det ved å trykke på enter når <tt>phpscript</tt> er markert. Hvis du har lyst til å endre filteret ditt bare litt, kan det enkleste være å redigere denne fila. Det som er viktig å legge merke til er at webmail-editoren kun leser de egenproduserte kommentarene i denne fila og presenterer disse som filteret hvis det både er kommentarer og kommandoer. Det er derfor lurt å slette disse merkelige kommentarene, ellers vil webmail presentere et filter, mens du faktisk har et annet filter.
 
  
Hvis du ikke har et filter fra før av, vil du kun se <tt><new script></tt>. Du kan da enten velge å redigere direkte ved å trykke enter på <tt><new script></tt> eller du kan åpne en ny fil (<tt>C-x C-f filnavn.siv</tt>). Jeg synes det er tryggest å lagre på hjemmeområdet en gang i blant. Jeg tar derfor utgangspunkt i at det blir laget en fil på hjemmeområdet som heter <tt>sievefilter.siv</tt>.
+
==Mer info==
 +
===Eksterne lenker===
 +
[http://tortoisesvn.tigris.org/ Offisiell hjemmeside]
  
Hvis du har et filter du ønsker å laste opp (f.eks. <tt>sievefilter.siv</tt>) og gjøre aktivt, gjør du på følgende måte: Du starter <tt>sieve-manage</tt>, og logger deg på tjeneren. Åpne fila du ønsker å laste opp på vanlig måte (<tt>C-x C-f</tt>). Trykk <tt>M-x</tt> og skriv inn <tt>sieve-upload</tt>. Filteret vil da bli testet, og hvis det er syntaktisk OK, blir det lasta opp. Hvis det er feil i skriptet, får du beskjed om det. Rett opp og last opp på ny.
 
  
Du har nå lasta opp filteret, men det er enda ikke gjort aktivt. For å gjøre det aktivt gå tilbake til vinduet <tt>*sieve*</tt>. Her vil det nye skriptet kanskje ikke ha dukket opp enda, men du får det fram med <tt>M-x sieve-refresh-scriptlist</tt>. Når du ser det nye skriptet ditt, marker det, og kjør <tt>M-x sieve-activate</tt>. Du har nå lasta opp og aktivert det nye skriptet, og det vil brukes hver gang det kommer nye meldinger til deg.
 
  
*Hvordan ser så et Sieve-filter ut?
+
[[Kategori:Programvare]]
Les [http://www.ietf.org/rfc/rfc3028.txt?number=3028 dokumentasjonen] eller se mitt eksempel på http://termvakt.uio.no/filer/sievefilter.txt
+
[[Category:Windows]]
 
+
Siden få gidder å lese standarden så kan jeg komme med litt info. Se først på eksempelfila, og du vil se at starten av fila ser slik ut:
+
 
+
  require ["fileinto","reject","vacation","imapflags","relational","comparator-i;ascii-numeric","regex","notify"];
+
 
+
Denne linja brukes for å få med kommandoer man trenger, og webmail tar med alt som den kan bruke.  Egentlig klarer du deg med langt færre. Ordet <tt>require</tt> er en såkalt control structure. Andre kontrollstrukturer er <tt>if</tt> og <tt>stop</tt>.
+
 
+
Videre ser fila slik ut:
+
 
+
if header :contains "X-'''UiO'''-Spam-score" "sssss"
+
{
+
  fileinto "INBOX.spam";
+
  stop;
+
}
+
 
+
Den første linja er en <tt>if</tt>-test. Første argument (<tt>header</tt>) til kontrollstrukturen <tt>if</tt> er en test som sier hvor i meldingen vi skal sjekke.  En liten oversikt over mulige tester:
+
 
+
:<tt>address</tt>: "address" vil tolke headerfeltene <tt>From</tt>, <tt>To</tt>, <tt>Cc</tt>, <tt>Bcc</tt>, <tt>Sender</tt>, <tt>Resent-From</tt> og <tt>Resent-To</tt> slik at vi kun står igjen med selve e-postadressene (altså hvis det i <tt>To</tt>-feltet står "termvakt <termvakt@matnat.uio.no>" vil <tt>address</tt> plukke ut "termvakt@matnat.uio.no" for å gjøre sammenligningen).
+
:<tt>allof</tt>: Logisk AND, forklart nedenfor
+
:<tt>anyof</tt>: Logisk OR, forklart nedenfor
+
:<tt>envelope</tt>: Sjekker adressen som står utenpå konvolutten, denne kan være helt forskjellig fra det som står i To og From-feltet i selve meldingen.  Dessverre blir f.eks. "martin.sollien" skrevet om til brukernavnet "martiso" på vegen gjennom e-postsystemet, men bortsett fra dette er konvoluttadressen uforandret.  Adressen i <tt>To</tt> blir alltid skrevet om til din offisielle adresse, så hvis du ønsker å sortere ut e-post sendt til dine gamle adresser, må du bruke <tt>envelope</tt>.  Krever <tt>require "envelope"</tt>.
+
:<tt>exists</tt>: Sjekker om headeren er finnes i meldingen. Et lite eksempel som vil kaste meldinger som ikke har definert avsender: <tt>if not exists "From" { discard; }</tt>
+
:<tt>header</tt>: Angir at vi skal teste en header for innhold.
+
:<tt>not</tt>: Logisk NOT, tar en av de andre testene som argument og inverterer resultatet.
+
:<tt>size</tt>: Tester på størrelsen til mailen. De to argumentene den kan ha er <tt>:over</tt> og <tt>:under</tt>. Kan bruke bokstavene <tt>K</tt> (=2^10), <tt>M</tt> (=2^20) og <tt>G</tt> (=2^30) for å angi størrelse, f.eks. <TT>4M</TT>. For eksempel se i '''RFC3028'''.
+
 
+
 
+
Det andre argumentet, "<tt>:contains</tt>" er et tagged argument. I dette tilfellet sier det hvordan <tt>if</tt>-testen skal teste. De fem sammenligningsmåtene man kan bruke er:
+
 
+
:<tt>''':contains'''</tt>: Returnerer sant hvis teststrengen finnes i den angitte headeren (altså om teststrengen er en delstreng av headeren).
+
:<tt>''':is'''</tt>: Returnerer sant hvis teststrengen og headeren er like.
+
:<tt>''':matches'''</tt>: Kan lage søkestrenger som inneholder vilkårlig tegn (wildcards). Et lite eksempel er <tt>if header :matches ["*viagra*", "*make*money*fast*"]</tt>. Det to jokertegnene er '?' og '*'. '?' tilsvarer ett tilfeldig tegn, mens '*' angir null eller flere tilfeldige tegn.  Hvis du skriver "Re:*", så må strengen starte med "Re:", mens "*Re:*" vil være sann uansett hvor "Re:" står i strengen.
+
:<tt>''':value'''</tt>: Tester på numeriske verdier, f.eks. tall i subject.  Krever <tt>require "relational"</tt>.
+
:<tt>''':regex'''</tt>: Hvis du ønsker å bruke regulære uttrykk, er dette tingen å bruke. Siden jeg ikke kan dette, kan jeg ikke utdype dette nærmere.  Krever <tt>require "regex"</tt>.
+
 
+
Hvis man bruker <tt>:contains</tt>, <tt>:is</tt>, <tt>:matches</tt> eller <tt>:regex</tt>, er det neste argumentet hvilken header man skal søke i, mens det etter det igjen angir teststrengen.
+
 
+
Det siste argumentet (det som er innafor {} ) er hva som skal skje hvis testen returnerer sant. Her kan man gjøre følgende:
+
 
+
:<tt>reject "tekst"</tt>: Meldingen tas ikke i mot, og sendes tilbake til avsender. "Tekst" er det du vil at avsender skal få av feilmelding.  Vær forsiktig med denne, da avsenderadressen kan være forfalsket, og da vil du plage en uskyldig tredjepart.
+
:<tt>fileinto "mappe"</tt>: Flytter meldingen til den angitte mappa. Om du gjør flere <tt>fileinto</tt> til samme mappe, vil du likevel bare få ett eksemplar. Krever <tt>require "fileinto"</tt>.
+
:<tt>redirect "adresse"</tt>: Videresender meldingen til "adresse".
+
:<tt>keep</tt>: Den legger meldingen i <TT>INBOX</TT>. Dette er standard på alle meldingene som kommer hvis ingen annen hendelse blir gjort.
+
:<tt>discard</tt>: Kaster meldingen.
+
:<tt>notify</tt>: Varsler om at det har kommet ny e-post via f.eks. SMS.  Har for tiden ingen effekt ved '''UiO'''. Krever <tt>require "notify"</tt>.
+
:<tt>vacation</tt>: Sender en melding til avsender om at du er utilgjengelig el.l.  For de fleste er det bedre å bruke Automatisk svar i '''UiO'''-innstillinger i webmail, men hvis du vil ha mer finkornet kontroll, kan du gjøre det her.  Se advarsel om <tt>reject</tt>.  Krever <tt>require "vacation"</tt>.
+
 
+
I tillegg så kan man legge inn kontrollstrukturordet <tt>stop</tt> her. Filteret vil da stoppe, og ikke gjøre de resterende testene.
+
 
+
 
+
Så kan vi gjøre det litt mer avansert. Vi har to ord som implementerer logisk AND og OR. Disse er <tt>allof</tt> og <tt>anyof</tt>. To eksempler ser du nedenfor:
+
 
+
# Denne testen flytter alle termvaktmail til termvakt-folderen. STOPPER IKKE
+
if anyof (
+
  header :contains ["to", "cc"] "termvakt@matnat.uio.no",
+
  header :contains ["to", "cc"] "lk-alle@usit.uio.no",
+
  header :contains ["to", "cc"] "stueansvarlige@matnat.uio.no",
+
  header :contains ["to", "cc"] "termvakt@ifi.uio.no",
+
  header :contains ["to", "cc"] "termvakter@ifi.uio.no")
+
{
+
  fileinto "INBOX.termvakt";
+
}
+
 
+
# Denne testen flytter meldinger som ser ut som spam til bofh.no til spam-folderen
+
if allof (
+
  header :contains ["to", "cc"] "@bofh.no",
+
  header :contains ["subject"] "viagra")
+
{
+
  fileinto "INBOX.spam";
+
  stop;
+
}
+
 
+
I tillegg så finnes operatoren <tt>not</tt>. Den virker som en logisk NOT og inverterer sannhetsverdien av et uttrykk. Et lite eksempel på det:
+
 
+
if not header :contains ["to", "cc"] "viagra"
+
{
+
  keep;
+
}
+
 
+
Når det gjelder kommentarer, så skrives de enten med # og da blir resten av linja kommentert ut, eller så kan man bruke /* */ og alt som står mellom de to sekvensene blir kommentert vekk.
+
 
+
En ting som er viktig å merke seg er det som kalles "String Lists". "String Lists" oppgis inne i '[' og ']' og elementene skilles med ','. Evalueringen er slik at dersom testen er sann med ett eller flere av elementene i listen, så er hele uttrykket sant. Det er brukt flere ganger i eksemplene over, men et lite forklarende eksempel til:
+
 
+
if header :contains ["to", "cc"] ["termvakt@matnat.uio.no", "termvakt@ifi.uio.no"]
+
 
+
er det samme som
+
 
+
if anyof (
+
  header : contains "to" "termvakt@matnat.uio.no"
+
  header : contains "cc" "termvakt@matnat.uio.no"
+
  header : contains "to" "termvakt@ifi.uio.no"
+
  header : contains "cc" "termvakt@ifi.uio.no")
+
 
+
Det er også viktig å merke seg at ingenting i Sieve skiller mellom store og små bokstaver, heller ikke strengene. Man kan gjøre slik at strengene blir case-sensitive, og det gjøres med å skrive <tt>:comparator "i;octet"</tt> etter f.eks <tt>:contains</tt>. Et lite eksempel:
+
 
+
if header :contains :comparator "i;octet" "Subject" "MAKE MONEY FAST"
+
{
+
  discard;
+
}
+
Denne testen vil kaste alle meldinger som har emnefelt som "this is a great way to MAKE MONEY FAST", mens den vil ikke slå til på "this is a great way to make money fast".
+
 
+
Så kan vi gjøre ting enda mer avansert. Vi har allerede sett at vi har <tt>if</tt> som test, men vi har også <tt>elsif</tt> og <tt>else</tt>. Et lite eksempel:
+
 
+
if header :is "Sender" "no@rart.no"
+
{
+
  fileinto "INBOX.rart"; 
+
}
+
elsif address :domain :is ["From", "To"] "uio.no"
+
{
+
  fileinto "INBOX.uio";
+
}
+
else
+
{
+
  keep;
+
}
+
 
+
I denne testen har er det en annen ny ting også, nemlig <tt>:domain</tt>. Siden vi jobber med e-post, har vi ofte behov for å få tak i det som er til venstre for @ og det som er til høyre for @. Det som er til venstre kan kan få tak i ved å legge til <tt>:localpart</tt>, mens hvis man skal ha tak i det til høyre (domenet) skriver man bare @@:domain@. Hvis man trenger hele e-postadressen, kan man skrive <tt>:all</tt>.  Dette fungerer for <tt>address</tt> og <tt>envelope</tt>.  Hvis du er plaget med at du får mye spam til adresser du ikke bruker, kan du f.eks. skrive:
+
 
+
if envelope :domain "To" ["hfstud.uio.no", "ernst.uio.no", "www.ifi.uio.no"]
+
{
+
  discard;
+
}
+
 
+
Siden konvoluttmottaker alltid vil være en av dine gyldige adresser, er det tilstrekkelig å sjekke domenedelen.
+
 
+
 
+
== Eksterne linker ==
+
*For oppklarende info, sjekk [http://www.ietf.org/rfc/rfc3028.txt?number=3028]
+
 
+
[[Category:Programvare]]
+
[[Category:Internett]]
+

Revisjonen fra 25. nov 2010 kl. 19:39

TortoiseSVN er en Windows Shell Extension for Subversion. Dette er et gratis program gitt ut under GNU Lisensen(General Public License). Programmet er et versjonskontrollsystem. Det vil si at det kan holde orden på forskjellige versjoner av datafiler. Når man foranderer på filer som er sjekket inn i subversion, blir de gamle versjonene lagret i databaser. På denne måten kan man gå tilbake og sammenlikne med tidligere versjoner. For mer informasjon, les wikipedia sine sider om Versjonskontrollsystem.


Innhold

Komme igang

Det beste stedet for å lære seg mer om TortoiseSVN er å gå til hjelp menyen. Dette gjør du ved å klikke på høyre musetast inne i en mappe. Hvis TortoiseSVN er installert, skal det være en egen rad i menyen ved navnet TortoiseSVN. Gå inn her og trykk på Help. Dette vises i bildet under.

TortoiseSVN help.png


Repository

Repository på norsk betyr oppbevaringssted. Men vi blir bruke den engelske terminologien gjennom denne guiden. I de følgende seksjonene vil enkel bruk av programmet forklares.

Opprette

Vi skal gå gjennom et enkelt eksempel for å vise hvordan man oppretter en "repository". Først Oppretter du en mappe. Finn et passende sted hvor du oppretter en ny mappe med et passende navn. F.eks. kan den hete "SVNRepository". Deretter høyreklikk på den nye mappen og velg TortoiseSVN → Create Repository here.

TortoiseSVN repository.png

Et "repository" blir da dannet i denne mappen. Ikke gjør endringer på filene som blir opprettet! Disse filene blir brukt og kontrollert av programmet.

Layout

Før man importerer data til "repository" kan det være greit å bestemme seg hvordan man vil organisere alle filene. Det er noen anbefalte oppsett som kan gjøre det enklere for deg holde oversikten. Men man kan alltid forandre filstruktur når som helst. Her kan man bruke egen sunn fornuft. Et eksempel som er gitt i guiden er gitt av følgende mapper i "repository":

  • Prosjektnavn/trunk - Hovedfiler for utvikling av prosjekt.
  • Prosjektnavn/branch - Inneholder "branch"-kopier.
  • Prosjektnavn/tag - Inneholder "tag" kopier.

Denne seksjonen er under utvikling November 2010.


Mer info

Eksterne lenker

Offisiell hjemmeside

Personlige verktøy
Navnerom
Varianter
Handlinger
Navigasjon
Kategorier
Programvare
Andre
Translate
Verktøy